Spring

인터넷 통신 기초 (IP/패킷/TCP)

chandlerxx 2023. 11. 23. 13:38

*인프런 강의  수강 후 개념 정리용 게시글입니다.

 

Web의 핵심적인 기술은 인터넷입니다. 인터넷의 핵심은 다양한 서버들끼리 통신이 가능한 거대한 네트워크를 구축하고 있다는 점입니다.

 

그렇다면 여러 노드 간 복잡한 인터넷망 속에서 어떻게 정보를 교환할까요?

 

1. IP (Internet Protocol)란? 


인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미합니다.

통신 기능이 제공되는 기기들이 서로 통신하기 위해 필요한 고유 번호이기도 한데요.

 

각 장치들 간 통신을 식별할 수 있는 주민등록번호 또는 전화번호라고 생각하시면 됩니다.

2022년 기준 IPv4와 IPv6 두 가지 체계가 있습니다.

널리 사용되는 IP주소는 IPv4이며 32비트의 값을 갖는다 정도로만 짚고 넘어가겠습니다.

 

2. IP가 왜 필요할까요?


중요한 메세지가 담긴 데이터가 아무 곳으로 전송되면 안되겠죠. 

 

  • 지정된 서버로 보내야할텐데 이때 필요한게 IP주소값 입니다. 일반적으로 특정 IP주소에 데이터를 전달하고요.
  • 데이터는 패킷이라는 데이터 형식에 맞춰 전달됩니다.

출처 : 위키백과 - IPv4 패킷 헤더 예시

  • 서로간의 통신을 예로 들면 아래와 같습니다.
    1) 클라이언트 → 클라이언트 패킷 → 서버
    2) 서버 → 서버패킷 → 클라이언트 

다만 전송되는 패킷이 중간에 사라지거나(소실), 순서대로 오지 않는다면 에러가 발생할 확률이 있습니다. IP 프로토콜이 가진 한계죠.

그외 하나의 장비안에서 수많은 프로그램들이 통신하기 위해 PORT라는 개념이 등장했고,

ICMP에서 오류 메세지를 알려주지만 대처를 못해서 상위 프로토콜인 TCP/UDP개념까지 등장하게 되었습니다.

 

 

3. TCP (Transmission Control Protocol)


아래 그림은 인터넷 프로토콜 스택의 4계층입니다.

IP 기반 위에 전송 계층을 담당하는 부분이 TCP/UDP라는 것부터 체크하겠습니다.

출처 : https://m.blog.naver.com/nackji80/220486253904

 

 

TCP는 현재 대부분 사용하고 있을 정도로 신뢰성이 높고 연결지향적 서비스를 제공합니다.

  • 3-way-handshaking 연결 유지합니다. (SYN -> SYN+ACK -> ACK)
  • 데이터 전달을 보증하고 순서를 보장합니다.

패킷의 추적 및 관리를 한다고 이해하시면 편합니다.

 

 


[출처]