ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP, UDP
    cs/HTTP 2023. 11. 29. 16:35

    TCP 프로토콜 -
    IP 프로토콜에서 발생했던 문제들을 해결해 준다

    그전에 인터넷 프로토콜 스택의 4계층에 대해 알아보자
    애플리케이션 계층 - HTTP, FTP
    전송 계층 - TCP, UDP ( )
    인터넷 계층 - IP (    os    )
    네트워크 인터페이스 계층

    우리가 평소에 사용하는 애플리케이션 계층에서 메시지를 보낸다고 하자(SOCKET 라이브러리를 통해 전달)
    그 메지를 전송 계층에서 규칙을 씌우고 (TCP정보 생성, 메시지 데이터 포함),
    다음 인터넷 계층에서 그 위에 또다시 규칙을 씌운다 (IP 패킷 생성, TCP 데이터 포함)
    그 규칙을 네트워크 인터페이스 == LAN 카드를 통해서 Ethernetframe(이더넷프라임)을 포함하여
    인터넷으로 나가게 된다

    TCP/IP 패킷 정보에는 IP 패킷의 출발지, 목적지 IP 주소에 추가로
    출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 추가되어 IP 프로토콜의 문제점을 해결한다
    이러한 정보들로 전송 데이터를 감싸서 전송된다고 보면 된다

    TCP 특징
    - 연결지향 (먼저 연결을 한다음에 메세지를 보낸다), TCP 3 way handshake (가상 연결)
    - 데이터 전달 보증 (누락된 보고를 받을 수 있음)
    - 순서 보장

    - 신뢰할 수 있는 프로토콜
    - 현재는 대부분 TCP 사용

    TCP 3 way handshake 방식으로
    클라이언트가 서버로 데이터를 보내는 과정을 살펴보자
    SYN : 접속 요청, ACK : 요청 수락
    1. 클라이언트가 SYN 을 서버로 보낸다 
    2. 서버가 SYN+ACK 를 클라이언트로 보낸다
    3. 클라이언트가 ACK 를 서버로 보낸다 (1,2,3 을 connect, 연결 과정이라 한다)
    4. 데이터가 전송된다 (요즘은 3번에 ACK를 보낼 때 같이 데이터를 보내도록 최적화가 됐다고 한다)

    참고로 connect 과정을 거쳤다고 해서 물리적으로 연결이 된 것은 아니다
    결과적으로 connect 가 수행 됐다면, 논리적으로 클라이언트와 서버가 연결 됐다고 생각하는 것
    실제로 연결된 인터넷 망의 노드들과는 관계가 없다

    데이터 전달이 보증 된다는 것은, 클라이언트가 보낸 데이터를 서버가 받았다면,
    받았다는 메시지를 클라이언트에 돌려 주는 방식을 말한다

    순서 보장 또한 클라이언트가 보낸 순서대로 도착하지 않았을 때, 서버가 클라이언트에 잘못된 순서부터
    다시 보내라는 메시지를 보낸다





    UDP 프로토콜
    사용자 데이터그램 프로토콜(User Dategram Protocol)
    - 하얀 도화지에 비유 (기능이 거의 없음)
    - IP와 거의 같으며 +PORT +체크섬 정도만 추가
    - 애플리케이션에서 추가 작업 필요

    PORT란 데이터가 어떤 용도로 사용되는 것인지를 구분하는 것이다
    체크섬은 이 메시지가 제대로 맞는지 검증하는 데이터이다

    UDP를 사용하는 이유는 뭘까
    크게 두가지 이유가 있다
    하나는 속도이다
    TCP는 다양한 기능이 있는 만큼 데이터가 크고, 주고받는 과정이 번거로워 속도가 느리다
    두번째는 TCP는 기능을 개선하기가 어렵다
    만약 내가 직접 최적화할 수 있다고 생각한다면 UDP를 사용하면 된다

    'cs > HTTP' 카테고리의 다른 글

    URI  (0) 2023.11.29
    DNS  (0) 2023.11.29
    PORT  (0) 2023.11.29
    IP(Internet Protocol)  (0) 2023.11.29
    http가 필요한 이유  (0) 2023.11.29
Designed by Tistory.