'해당 내용은 김영한 개발자님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 바탕으로 정리한 내용입니다.'

 

Client - Server 간의 관계

 

IP(Internet Protocol)

 

송신 호스트와 수신 호스트가 정보를 주고 받는 데 사용하는 정보 위주의 유약이다. 

IP 패킷**은 출발지 IP, 목적지 IP, 메세지 넣어 목적지 IP까지 노드가 전달한다.

 

다만, 이 IP 패킷은 몇가지의 문제점을 가지고 있다.

  1. 메세지가 길어질 경우 여러 IP 패킷으로 분할하게 되는데, 이 패킷들이 목적지까지 도착하는데 이동 경로가 달라지게 되므로 순서 없이 도착할 수 있다. 
  2. 물리적 계층 혹은 중간에 서버들이 끊김으로 인해 패킷이 손실되 버려 의미 있는 메세지로 결합하는 것이 불가능해질 수 있다.
  3. 우발적인 재 전송으로 인해 패킷이 중복 될 수 있다.

 

이러한 문제를 처리할 수 있는 더 높은 수준의 프로토콜인 TCP(Transmission Control Protocol)로 해결이 가능하다.

 

 

TCP(Transmission Control Protocol) / UDP(User Datagram Protocol)

 

TCP, IP 패킷 구조 - https://www.khanacademy.org/computing/computers-and-internet TCP 글 참조

 

TCP(Transmission Control Protocol)은 패킷의 안정적인 전송을 보장하기 위해 IP위에 사용되는 전송 프로토콜이다.

TCP 세그먼트는 IP 패킷 안에 있는데, 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등이 들어가 있다.

 

TCP/IP로 패킷 전송하는 과정은 다음과 같다.

TCP/IP 패킷 전송 과정 - 3 way handshake

  1.  SYN, 동기화할래? 
    고유한 임의 번호가 포함된 SYN 패킷 또는 세그먼트를 서버에 보낸다.
  2. ACK + SYN, 좋아!
    서버가 해당 세그먼트를 수신한 경우 클라이언트 시퀀스 번호에 + 1을 더한 ACK+SYN 패킷에 반환하여 동의한다.
  3.  ACK, 확인!
    서버의 시퀀스 번호에 + 1을 더한 값을 ACK 패킷에 담아 전송하는데 이때 서버에 데이터 전송 시작할 수 있다.

순서가 잘못된 패킷 확인

수신자는 지금까지 확인한것보다 높은 시퀀스 번호 확인하면 적어도 하나의 패킷이 누락되었음을 알 수 있다.

그리고 다음 번호가 예상되는 시퀀스 번호로 발신자에게 문제가 있음을 알린다.

이렇게 누락된 패킷은 이동하는 도중에 분실되거나 혹은 다른 패킷보다 늦게 도착할 수 도 있는데 발신자는 수신자의 응답에 따라 패킷을 재전송한다. 재 전송시 손실되지 않은 패킷일 경우 수신자가 중복 패킷 버릴 수 있다.

 

 

UDP(User Datagram Protocol)

TCP가 신뢰할수 있는 프로토콜이라 많이 사용하긴 하지만, 내가 최적화를 할 수 있다고 한다면 UDP를 사용한다.

UDP는 IP랑 큰 차이가 없으나 PORT를 체크할 수 있다는 점에서 IP와 다른 차이점이 존재한다.

 

 


1) 패킷(Packet) : 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록

2) 참고목록 : 

김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식

https://www.khanacademy.org/computing/computers-and-internet/xcae6f4a7ff015e7d:the-internet/xcae6f4a7ff015e7d:transporting-packets/a/transmission-control-protocol--tcp

'Web > HTTP' 카테고리의 다른 글

[HTTP] PORT, DNS  (1) 2022.09.30

+ Recent posts