[네트워크] TCP, UDP

zunzero·2022년 9월 21일
0

CS

목록 보기
6/8

3-way handshake

3-way handshake는 TCP/IP 프로토콜로 통신하기 전, 정확한 정보 전송을 위해 상대방 컴퓨터와 연결을 하는 과정이다. (TCP 연결 초기화)

클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 보내면, 서버는 요청을 수학하는 ACK를 포함하여 SYN+ACK 패킷을 클라이언트에게 보낸다.
클라이언트는 이를 수신한 후, 다시 ACK를 서버에게 발송하여 연결을 하게 된다.

  • SYN: 접속 요청
  • ACK: 요청 수락
  • 마지막 ACK와 함께 데이터를 전송할 수도 있다.

4-way handshake

3-way handshake를 통해 Connection setup을 했다면 TCP 연결을 종료하는 Connection termination 과정은 4-way handshaking을 통해 이루어진다.
TCP Connection termination은 양방향으로 2개의 연결이 독립적으로 닫히기 때문에 4-way 단계를 밟게 되는 것이다.

TCP/IP 4계층

OSI 7계층과 TCP/IP 4계층은 전공 수업 시간에 배웠다.(하지만 많이 까먹었다.ㅎ)
대략적인 그림은 아래와 같다.

OSI 7계층은 네트워크 통신을 표준화한 모델로, 통신 시스템을 7단계로 나눈 것이다.
그러나 이는 실무적으로 이용하기 복잡한 탓에, 실제로는 이를 단순화한 TCP/IP 4계층이 사용되고 있다.

각각의 모델에서 각 계층은 하위 계층의 기능을 이용하고, 상위 계층에게 기능을 제공한다.

캡슐화 & 역캡슐화

캡슐화란 통신 프로토콜의 특성을 포함한 정보를 Header에 포함시켜서 하위 계층에 전송하는 것을 말한다.
통신 상대 측은 이러한 Header를 역순으로 제거하면서 원래의 정보를 추출해내는데, 이러한 과정을 역캡슐화라고 한다.

TCP와 UDP

TCP와 UDP는 TCP/IP 4계층 모델 중 전송계층에서 주로 사용되는 프로토콜이다.
전송계층은 두 응용 계층 사이에서의 process-to-process 통신을 제공하는데, 이는 응용계층으로부터의 메시지를 받아 전송계층 패킷으로 캡슐화하여 전송한다.(캡슐화=header가 붙는다.)
캡슐화된 패킷은 TCP에선 segment로, UDP에선 datagram으로 불린다.

TCP는 연결형, 신뢰성 전송 프로토콜이다.
연결지향적 서비스를 제공하기 위해 데이터를 전송하기 전에 3-way handshake를 하여 두 호스트의 전송 계층 사이의 논리적 연결을 설립한다.
또한 신뢰성을 보장하기 위해 오류제어, 흐름제어, 혼잡제어 등을 실행한다.
이러한 신뢰성 있는 서비스 덕분에 전체 스트림을 순서에 맞고 오류 없이, 부분적인 손실이나 중복없이 전송하는 것을 보장한다.
따라서 header가 더 크고 속도가 비교적 느리다는 단점이 있다.

UDP는 비연결형 프로토콜로 3-way handshake 등의 연결 과정이 없고, 흐름제어나 오류제어, 혼잡제어 등을 제공하지 않는다.
이러한 단순성 덕분에 적은 양의 오버헤드를 갖고 수신 여부를 확인하지 않아 속도가 빠르다는 장점이 있다.

TCP는 신뢰성이 중요한 통신(HTTP, File 전송 등)에 쓰이고, UDP는 실시간성이 중요한 통신(동영상 스트리밍 등)에 주로 사용된다.

profile
나만 읽을 수 있는 블로그

0개의 댓글