IP프로토콜의 한계 

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 중간에 패킷이 사라질시, 패킷이 순서대로 도착하지 않을 경우
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 ? >> 구분할 수 없음

TCP vs UDP 

IP프로토콜의 한계가 명확하기 때문에 OSI 7계층에서(최근에는 4계층이 시장 점유율이 높다고 한다.)
TCP/IP 모델 기반의 TCP 통신을 하는 경우가 많아졌고 상황에 따라 최적화 or 속도 등의 목적으로 UDP를 사용하기도 한다. 

TCP/UDP 모두 4계층 Network Layer 에서 사용되는 프로토콜이다. 각각의 PDU 이 다른데 TCP의 경우 세그먼트, UDP의 경우 데이터 그램으로 표현할 수 있다. 

1) TCP(Transmission Control Protocol)

  • 연결형 서비스로 가상 회선 방식 제공 (연결지향)
  • 패킷의 순서와 데이터 전달을 보장한다. 
  • 3-way handshaking 과정을 통해서 TCP Socket() 을 맺게 되고 (일반적으로 L7에서 맺곤한다. L4 API를 통해서) 4-way handshaking을 통해서 해제한다. 
  • 신뢰할 수 있는 프로토콜이다. 
  • 흐름 제어 및 혼잡 제어를 수행한다. 
  • 대부분의 통신하는 경우에 있어 TCP를 많이 사용한다. 

2) UDP(User Datagram Protocol)

  • TCP 이 가지고 있는 특징에 정반대라고 생각하면 된다. 
  • IP와 거의 같다. +PORT+체크섬 정도 
  • 비연결형 서비스로 데이터그램 방식을 제공한다.
  • 신뢰성이 낮다.
  • 최적화할 때 UDP를 많이 쓰곤 한다. 이 부분은 UDP 연결 자체가 없기 때문에 (connect 함수를 사용하지 않음) 서버 소켓과 클라이언트 소켓의 구분이 없기 때문에 가능하다.

 

PORT

  • 엔드 투 엔드 연결을 수행할 때 내 컴퓨터에서 둘 이상의 컴퓨터를 연결해야 할 경우 각 컴퓨터를 어떻게 구분할지에 대한 것을 PORT 기반으로 라우팅하게 된다. 즉, IP만으로는 한계가 존재한다. 
  • TCP/IP 헤더 패킷에 출발지 PORT 와 목적지 PORT 를 포함한다. 그래서 데이터 통신할때 캡슐화 과정을 거치는 와중에 헤더에 TCP/IP 헤더를 붙이게 된다. 
  • 같은 IP 내에서 프로세스 구분을 수행한다. 
  • 0~65535 할당 가능하고 
    • 여기서 0~1023 은 잘 알려진 포트, 사용하지 않는것이 좋다. 
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443 을 사용한다. 

DNS

  • DNS는 도메인 이름에 대한 IP 정보를 우리가 하나하나 기억하지 못하기 때문에 Local DNS 에서 등록된 Root DNS 부터 차례로 TLD(Top-Level-Domain) / SLD(Second-Level-Domain) 등을 Recursive하게 탐색하여 각 도메인 서버에서 찾고자 하는 도메인 이름 정보를 검색해 IP 를 찾아오는 과정이다. 
  • IP를 찾아오게 되면 내 컴퓨터 단말에 캐시되어 저장된다. 

 

출처 :

https://livlikwav.github.io/study/tcp-and-udp/ 

https://velog.io/@leemember/HTTP-%EA%B0%9C%EB%85%90-%EC%95%8C%EC%95%84%EA%B0%80%EA%B8%B0-IP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%98-%ED%95%9C%EA%B3%84

3

'Computer Science > Network' 카테고리의 다른 글

HTTP 기본  (0) 2021.12.07
URI와 웹 브라우저 요청 흐름  (1) 2021.12.07
Network08 :: 네임서버  (0) 2020.09.28
Network07 :: OSI 7 계층  (0) 2020.09.26
Network06 :: 서브넷마스크(3)  (0) 2020.09.02