TCP 송수신 관련하여 유튜브를 보다가 네트워크 TCP/IP 4계층에 대한 정리를 한번 해놓고 가려고 한다.
4계층 - Application Layer
응용프로그램들 즉, 웹서비스나 메일같은 서비스를 할 수 있도록 표준적인 인터페이스를 제공한다.
HTTP 프로토콜이 있는 계층, 현재는 HTTP/1.1을 주로 사용
3계층 - Transport Layer
통신 노드 간의 연결을 제어하고, 자료의 송수신을 담당
정확한 패킷 전송을 보장하는 TCP와, 그렇지 않은 UDP 프로토콜이 있음
2계층 - Internet Layer
통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅 기능을 담당
TCP의 Buffer(메모리)에서 데이터가 Segment로 분해되는데 각 Segment를 패킷(포장을 뜻함)으로 만들어 전송할 준비를 함
대표적으로 IP 프로토콜이 있음
1계층 - Network Access Layer
LAN, 위성 통신, 패킷망, MAC 등 전송을 함
송신 측 서버->수신측 서버로 데이터 전송 시 흐름을 간략히 정리하자면
송신측 서버 :
4계층 Memory -> 3계층 Memory로 복사 후 Segment로 쪼갬(각 Segment에 번호를 할당함) -> 2계층 각 Segment를 패킷으로 바꿈 -> 1계층 패킷을 각 주소에 맡는 곳으로 전달, 이때 패킷은 Frame으로 불림
수신측 서버 :
1계층에서 Frame 받음 -> 2계층 패킷을 뜯음 ->3계층 Memory에서 Segment를 다시 조립하기 시작함, 이때 남은 Memory의 크기를 Window Size라고 함 -> 4계층 Memory로 데이터를 받음
TCP 송수신을 하게 되면 수신 측 3계층에서 Segment를 받고 나서 ACK(acknowledgement) 송신측 서버에 보내서 Segment 잘 받았다고 알려주게 된다.
ACK안에는 Window Size가 포함되는데 Window Size가 0이면 송신 서버 측에서 데이터를 보내지 않고 Wait하게 된다.
즉 수신 측 4계층에 서버(서비스)의 Data Read 속도가 1계층에 들어오는 네트워크 데이터 수신 속도보다 빨라야 Data 전송 지연이 걸리지 않게 된다.
'항해 시절' 카테고리의 다른 글
코딩 시작 부터 항해99 느낀점, 장단점 (0) | 2022.07.02 |
---|---|
자료 구조 공부 중 (0) | 2022.07.02 |
Travis CI, CodeDeploy에 대해서.. (0) | 2022.07.02 |
스프링 서버 HTTPS(Nginx, letsencrypt 활용) 적용 (0) | 2022.07.02 |
스프링 복습 및 Logback에 대해서 (항해 10주차 회고록) (0) | 2022.07.02 |