TCP와 UDP가 무엇일까 ..

0

Web & Network

목록 보기
5/9

TCP/IP 4계층

만약 자신이 상대방에게 정보를 전달하고 싶다면 위의 TCP/IP 4계층을 통해서 정보를 전달하게 됩니다.

자신이 다른 사람에게 메시지를 전달한다는 가정을 해보겠습니다.

  1. 애플리케이션 계층에서 OS계층으로 정보를 넘깁니다. 메시지를 주고 받을 때는 주로 소켓 라이브러리를 사용합니다.

  2. 애플리케이션 계층에서 받은 정보를 TCP 정보로 씌웁니다.

  3. TCP 정보 위에 또 IP 정보를 씌웁니다. -> IP 패킷이 생성됩니다.

  4. LAN으로 정보가 나갈 때 이더넷 프레임을 통해서 나갑니다. 물리적인 정보가 포함됩니다.


TCP와 IP 패킷이 뭘까요 ?

저희는 메시지를 상대방에게 전송할 때 OS 계층에서 2단계(TCP, IP)나 정보를 씌우고 그걸 IP 패킷이라고 불렀습니다.

그렇다면 TCP와 IP 패킷이 뭘까요 ?


TCP (전송 제어 프로토콜)

TCP의 정보는 출발지 포트, 목적지 포트, 전송 제어와 관련된 정보, 순서와 관련된 정보, 검증과 관련된 정보 등등이 포함됩니다.

따라서 이러한 TCP 정보들이 자신이 보내고자 하는 정보를 1차적으로 포장합니다.

TCP의 3가지 특징

TCP는 3가지 특징을 가지고 있습니다.

  • 연결지향 : 자신과 상대방이 연결이 되었는가 되지 않았는가
  • 데이터 전달 보증 : 자신이 보낸 데이터가 잘 전달 되었는지 되지 않았는지 알 수 있음
  • 순서 보장

3 Way Handshake - 연결 지향

TCP는 그 유명한 3 Way Handshake를 사용합니다. 뭐 굳이 해석하면 ...

네 .. 3 방향 악수라고 불리는 이유를 알아보겠습니다.

  • SYN : 접속 요청
  • ACK : 요청 수락
  1. 우선 클라이언트인 Host A에서 서버에게 SYN이라는 요청을 보냅니다.
  2. 요청을 받은 서버는 요청을 수락하면서 다시 클라이언트에게 요청을 합니다.
    (서버는 요청과 수락을 동시에 하는 셈)
  3. 다시 요청을 받은 클라이언트는 서버가 보낸 요청을 수락하게 됩니다.

이렇게 3단계로 이루어진 과정을 마친 후 데이터를 전송합니다. (요즘은 3번째 단계와 함께 데이터를 보내기도 한다고 합니다.)


데이터 전달 보증

TCP 에서는 클라이언트가 서버에게 데이터를 전송하면, 서버는 다시 클라이언트에게 데이터를 잘 받았다고 response 해줍니다.


순서 보장

만약 데이터를 담은 패킷을 패킷 1, 패킷 2, 패킷 3과 같은 순서로 서버에게 전송했지만, 서버에 도착한 패킷 순서가 패킷 3, 패킷 2, 패킷 1 처럼 순서가 뒤바껴서 올 때 서버는 도착한 패킷을 다 버리고 클라이언트에게 패킷을 다시 요청합니다.


IP 패킷

TCP로 감싼 정보를 IP 정보를 한 번 더 감싸게 됨으로써 IP 패킷이 생성됩니다.
IP 패킷은 출발지 IP, 목적지 IP 등등 전송 데이터를 가지고 있습니다.

그냥 IP도 아니고 IP 패킷이 무엇인지 궁금할 수 도 있는데, 그냥 이러한 정보들을 포장한 것이라고 보면 편할 것 같습니다. (ex: 택배 박스)


UDP (User Datagram Protocol)

사실 UDP는 TCP에 비해서 기능이 거의 없습니다. TCP가 지원하는 연결지향, 데이터 전달 보증, 순서 보장도 해주지 않습니다.

UDP는 IP와 거의 비슷하며, IP + Port 라고 생각하셔도 무방할 정도입니다.

그럼 UDP는 왜 써 ..?

UDP가 TCP보다 뛰어난 점이 딱 한가지 있습니다.

바로 속도가 TCP에 비해서 빠르다는 점인데 서비스가 너무 느려서 네트워크 쪽의 성능을 최적화 하고 싶다면 우선 TCP는 제외 해야합니다.

이미 요즘 인터넷 자체가 TCP를 채택하고 있고, 이미 구축되어 있는 것이 많기 때문에 전송 속도도 더 빠르게 하기 힘듭니다.

UDP는 아무 것도 없는 상태이기 때문에 UDP에 손을 대서 최적화를 해야합니다.


reference
reference

0개의 댓글