레이어4(Layer4) - 전송계층프로토콜 TCP
- 소켓에 기록된 애플리케이션 데이터는 커널 내에서 통신 대상에게 전달하기 위한 준비를 시작한다
- 첫번 째 임무 수행하는 것이 전송 계층 프로토콜인 TCP이다
1. TCP의 역할
1) 애플리케이션이 보낸 데이터를 그형태 그대로 상대방에게 확실히 전달한다
2) 담당
- 서버가 송신할 때와 서버가 수신한 후 애플리케이션에게 전달할 때로, 상대 서버까지 전송하는 부분은 하위 계층인 IP에게 모두 위임한다
- IP만으로 통신 할 수 있지만, IP에는 데이터가 상대방에게 확실히 전달됐는지 확인하는 기능이나 도착한 순서를 확인하는 기능이 없다
3) 기능
- 포트 번호를 이용해서 데이터 전송
- 연결생성
- 데이터 보증과 재전송 제어
- 흐름 제어와 폭주 제어
2. OS의 커널안에서 TCP 처리 흐름
1) 애플리케이션 프로세스가 소켓에 데이터를 기록한다
2) 소켓에 기록된 데이터는 큐를 경유해서 커널 내 네트워크 처리 부분에 전달된다
3) 커널에 전달된 데이터는 '소켓 버퍼'라는 메모리 영역에서 처리된다
4) 데이터에 TCP 헤더를 붙여 TCP 세그먼트를 생성한다
5) 하나의 TCP 세그먼트로 전송할 수 있는 최대 크기를 MMS라고 한다
3. TCP 세그먼트(TCP segment)
1) TCP Segment(TCP Packet) : 데이터(data) + TCP 헤더
2) TCP 헤더(TCP Header)
- 도착 지점 포트 번호, TCP 기능을 표현하기 위한 정보
3) MSS(Maximum Segment Size)
- 하나의 TCP 세그먼트로 전송 할 수 있는 최대 데이터 크기
- 링크 계층으로 사용해서 데이터를 전송 하기 때문에 MSS는 링크 계층에서 전송 할 수 있는 최대 크기에 의존하며, 환경이나 설정에 따라 달라진다
4) MTU(Maximum Transfer Unit)
- 링크 계층에서 전송 할 수 있는 최대 데이터 크기
5) 세그먼트 분할
- 예로 2000byte의 데이터가 애플리케이션에 등록된다면 MSS의 크기가 1460byte이기 때문에 세그먼트는 1460과 540으로 분할 된다
'IT_Infra > WebFlow' 카테고리의 다른 글
[IT_Infra] 레이어3(Layer3) - 네트워크 계층의 프로토콜 IP(network) (0) | 2016.11.20 |
---|---|
[IT_Infra]레이어4(Layer4) - TCP의 기능 (0) | 2016.11.19 |
[IT_Infra] 세션을 남겨두는 기능 Keep-Alive (0) | 2016.11.18 |
[IT_Infra] 레이어7(Layer7) - 애플리케이션 계층의 프로토콜 HTTP(applicationLayer) (0) | 2016.11.18 |
[IT_Infra] TCP/IP 프로토콜 슈트(protocol suite) (0) | 2016.11.16 |