TCP/IP , UDP

Hyunz·2022년 2월 9일
0

cs/network

목록 보기
3/3
post-thumbnail

TCP는 데이터 추적, IP는 데이터 전달

  • EMAIL(SMTP), HTTP, HTTPS, FTP, TELNET 등 우리에게 친숙한 인터넷 서비스의 대부분이 TCP/IP기반이다.

TCP (Transmission Control Protocol)

복잡 신뢰성높음 재조합 손실여부확인

TCP는 데이터를 신뢰성 있게 전달하기 위해 만들어진 규약(프로토콜)이다. 컴퓨터와 컴퓨터를 이어주는 네트워크는 네트워크 선로를 통해 전달된다. 어떤 선로인지에 따라 데이터를 전달하는 속도나 손실데이터양이 달라지는데, 이는 데이터를 전달하는 과정에서 그 순서가 의도하지 않게 뒤바뀌거나 손실되어 전달될 수 있음을 뜻한다.

TCP는 데이터 패킷에 일련번호를 부여함으로써 데이터 손실을 찾아내서 교정하고, 순서를 재조합하여 클라이언트에게 전달할 수 있게 해준다.

(패킷 : 인터넷 내에서 효율적으로 라우팅하기 위해 메시지를 여러개의 작은 조각들로 나눈 것)


일련번호가 부여된 패킷을 IP계층으로 보낸다. 각 패킷이 같은 IP로 가더라도 다른 경로(선로)로 전송될 수 있기 때문에 받는사람의 TCP가 받은 각 패킷을 재조립하여 사용자에게 완전한 파일로 보낼 수 있을때까지 기다린다. 각각의 패킷들은 TCP header에 어떤 순서로 재조합할지에 관한 정보를 가진다.


TCP는 IP의 정보뿐 아니라 Port(같은 IP 내에서 프로세스를 구분하기 위한 것)를 이용하여 연결한다. Endpoint에 도착한 데이터가 어느 Port로 들어가야하는지 알아야 연결을 시도할 수 있기 때문이다. TCP Header에 Source Port와 Destination Port가 있다.

IP (Internet Protocol)

데이터전달

컴퓨터 간에 데이터를 전송하기 위해서 각 컴퓨터의 주소가 필요하다. Internet Protocol은 4바이트로 이루어진 컴퓨터 주소이다. 192.169.0.1 처럼 3개의 .로 나뉘어진 숫자로 표시된다.

IP는 TCP와 달리 데이터 재조합, 손실여부확인은 불가능하고 데이터를 전달하는 역할만 담당한다.

IP주소는 MAC주소(하드웨어 고유 식별번호)와 달리 가변적이다. 그래서 IP의 한계를 해결하는 것이 TCP이다.

TCP Header

통신하려는 양쪽 단말이 통신할 준비가 되었는지, 데이터가 제대로 전송됐는지, 데이터가 가는도중 변질되지 않았는지, 수신자가 빠짐없이 받았는지 등을 점검할 수 있는 정보가 담겨있다.

SYN, ACK, FIN, RST, Window size 등과 같은 신뢰성 보장과 흐름제어, 혼잡제어에 관여할 수 있는 요소들도 포함되어 있다.

https://evan-moon.github.io/static/ac69210c44cd473bcb737665d590b124/d9199/tcp-header.png

TCP는 흐름제어 한다

  • Window size로 한번에 송수신할 데이터의 양을 정한다

  • Window size는 수신자가 정한다

  • 자신이 지금까지 받은 데이터 양을 확인하에 송신자에게 Acknowledgment Number 를 보낸다. 300번째의 데이터를 받았으면 301번째부터 보내라고 301 숫자를 보낸다.

  • 데이터의 순서를 표기한 것이 Sequence Number 이다.

TCP는 혼잡제어 한다

데이터가 지나가는 네트워크망의 혼잡이 중요하다.

Slow Start : 연결 초기에 보낼 데이터의 양을 적게 보내면서 수신자가 잘 받는지 확인하며 데이터 송출량을 조금씩 늘린다. 이런 방식으로 현재 네트워크에서 가장 적합한 데이터 송출량을 확인한다.


UDP (Use Datagram Protocol)

빠름 비연결성 신뢰성낮음

  • 데이터를 데이터그램 단위로 처리하는 프로토콜
    • 데이터그램 방식 : 패킷 교환할 때 각 패킷이 독립적으로 처리되어 목적지까지 가는 방식. 사전에 연결설정을 하지 않으며 순서와 무관하게 전달됨. 목적지가 같은 패킷이라도 항상 같은 경로를 따르진 않음
    • 가상회선 방식(TCP방식) : 패킷 교환할 때 양단간에 회선이 성립되는 방식
  • 비연결형, 신뢰성 없는 전송 프로토콜
  • IP가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층의 프로토콜
  • 속도가 빠르기 때문에 주로 실시간 방송과 온라인 게임 등 스트리밍 서비스에서 주로 사용한다.

UDP는 TCP와 다르게 3-way handshake, 4-way handshake로 연결을 설정/해제 하는 것이 아니다. 데이터를 보내고 그 데이터가 제대로 도착했는지까지 정확하게 확인하는 것은 아니다. 그렇기에 빠르지만 신뢰성이 낮다.


UDP Header

  • Source port : 시작 포트
  • Destination port : 도착지 포트
  • Length : 길이
  • Checksum : 오류 검출
    • 중복 검사의 한 형태로, 오류 정정을 통해 공간이나 시간 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.

UDP를 사용하는 DNS

DNS (Domain Name System)에서 UDP 통신 프로토콜을 사용한다.

DNS는 도메인을 의미한다. 도메인은 www.naver.com 같이 사용자가 알기 쉽게 IP(인터넷에 연결되어 있는 각각의 장치를 식별할 수 있는 주소, 가변적임)를 네이밍한 것이다.

DNS는 응용계층 프로토콜이고, 전송 계층 프로토콜로 UDP를 사용한다.


WHY?

  • UDP는 신뢰성이 낮지만, 부족한 신뢰성을 응용계층에서 추가할 수 있다. 타임아웃 또는 재전송 작업을 통해.
  • UDP는 TCP와 달리 connection을 유지할 필요가 없다
  • DNS request는 UDP segment에 꼭 들어갈 정도로 작음
  • Zone transfer(DNS 서버 간의 요청을 주고받을 때 사용하는 전송)을 사용해야할 때는 TCP를 사용함




참고자료1
참고자료2
참고자료3
참고자료4
TCP Header 사진출처
UDP참고자료1
UDP참고자료2
DNS참고자료3
+인터넷서치

profile
Do my BEST

0개의 댓글