코딩조각

[모든개발자를 위한 HTTP 웹 기본지식] IP, TCP, UDP

밍튜 2022. 9. 1. 00:43

[인터넷 네트워크]

<인터넷통신>
  • 클라이언트와 서버 사이에 인터넷으로 연결되있음
  • 인터넷은 복잡한 노드들의 연결로 되어있는데 어떻게 클라이언트에서 보낸 정보가 서버로 갈까???

 

-> IP (인터넷프로토콜)에서 알아보자

 

<IP>
  • ip주소를 클라이언트, 서버에 부여받아서 지정한 ip주소에 데이터 전달
  • Packet이라는 통신단위로 데이터 전달
  • IP패킷정보 : 출발IP, 목적지IP,전송데이터
  • ip패킷으로 서로 정보를 주고받을수 있음
ip프로토콜의 한계

-비연결성 : 패킷 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송

-비신뢰성 : 중간에 패킷이 사라지면??? 패킷이 순서대로 안오면????

-프로그램 구분 : 같은 ip를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

-인터넷프로토콜은 대상서버가 패킷을 받을수 있는 상태인지 모름(비연결성)

-패킷소실(비신뢰성)

-패킷 전달 순서 문제 발생(프로그램 구분)

 

-> 이런 인터넷프로토콜의 문제를 해결하기위해 TCP, UDP가 나옴

 

<인터넷 프로토콜>

 

<ip스택의 4계층>

애플리케이션계층 - HTTP, FTP

전송계층 - TCP, UDP

인터넷계층 - IP

네트워크 인터페이스 계층

 

<프로토콜 계층>

애플리케이션

OS

네트워크 인터페이스

 

  1. 프로그램이 Hello, world! 작성
  2. Socket 라이브러리를 통해 전달
  3. TCP 정보생성, 메시지 데이터 포함
  4. IP 패킷 생성, TCP 데이터 포함

 

TCP특징

전송제어 프로토콜(Transmission Control Protocol)

  • 연결지향 - TCP 3way handshake(가상연결)
  • 데이터 전달 보증
  • 순서 보장(출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보가 TCP 세그먼트로 포함)
  • 신뢰할수있는 프로토콜
  • 현재는 대부분 TCP사용

 

UDP특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

  • 하얀 도화지같음(기능이 거의 없음)
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 같지만 + PORT+체크섬 이 추가
  • 애플리케이션에서 추가작업 필요