Win32서버
Socket
WDmil
2024. 7. 25. 17:02
728x90
정의
소켓(Socket)은 OS커널에 구현되어 있는 프로토콜 요소에 대한 추상화된 인터페이스 이다.
장치 파일의 일종 으로 이해할 수 있다.
일반파일에 대한 개념이 대부분 적용된다.
소켓과 파일의 유사성
소켓 = 파일이다 라고 생각하면 된다.
소켓은 파일과 같은 방식으로 취급될 수 있다. 소켓은 프로세스를 주체로 하여 다음과 같은 작업을 수행할 수 있다.
일반적으로 우리가 파일에 사용하는 행위들인 열기, 쓰기, 생성, 삭제 등을 할 수 있다.
이러한 대상체 파일에 TCP소켓에 대한 추상화된 인터페이스를 제공하면, 이를 TCP소켓이라고 할 수 있다.
이때, TCP상에서는 파일과 다르게 쓰기와 읽기를 다음과 같이 표현한다.
Write -> Send
Read -> Receive
데이터 단위와 스트림
소켓에서 데이터를 Send와 Receive하는 과정에서 정의되는 단위를 데이터단위, 스트림 이라고 표현하는데, 이 설명은 다음과 같다.
계층별 데이터 단위
- L4 : Segment
- L3 : Packet
스트림과 세그멘테이션
네트워크상에서 데이터를 보낼 때 Steam과 Sagmentation으로 구분할 수 있는데, 이는 다음과 같이 이해하면 된다.
- 정보 한조각 = 패킷
- 조각단위 가 여러개 길게 묶여있는것 = 스트림
여러개의 세그먼트로 구성된 데이터 흐름을 의미 - Segmentation 세그멘테이션 : 데이터의 긴 열을 일정단위로 자르는걸 의미한다.
- Sagmentation 세그먼트 : 그러한 잘려진 조각을 의미한다.
이러한 한개한개 나뉘어진 세그먼트를 잘 포장해서 네트워크로 보내는것 이 패킷이라고 한다.
세그먼트 와 패킷의 차이
1. 세그먼트(Segment)
- 정의: 세그먼트는 전송 계층(Layer 4)에서 다루는 데이터 단위
- 내용물: 애플리케이션 계층(Layer 7)에서 전달된 데이터를 포함하고 있으며,
전송 계층의 헤더(예: TCP 헤더, UDP 헤더)가 추가 - 비유: 세그먼트는 택배 상자 안에 넣을 물건 묶음과 같다. 이 묶음은 아직 주소나 배송 정보가 없는 상태
2. 패킷(Packet)
- 정의: 패킷은 네트워크 계층(Layer 3)에서 다루는 데이터 단위
- 내용물: 세그먼트에 네트워크 계층의 헤더(IP 헤더)가 추가된 것.
IP 헤더는 발신지와 목적지 IP 주소 등 네트워크 경로를 결정하는 데 필요한 정보를 포함. - 비유: 패킷은 IP 주소가 첨부된 택배 상자와 같다.
이 상자는 발신지와 목적지 주소가 명확히 기재되어 있어 네트워크를 통해 올바른 경로로 전달될 수 있다.
728x90