ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (HTTP) 2 - 전송계층 (TCP, UDP)
    개발/HTTP 2024. 10. 30. 14:42

    ■ 인터넷 프로토콜 스택 4계층

     

    인터넷 프로토콜은 스택은 사진과 같이 

    애플리케이션 계층, 전송 계층, 인터넷 계층, 네트워크 인터페이스 계층 4가지로 구성돼 있다.

     

     

    크게 우리는 사용하는 애플리케이션 (웹 브라우저, 채팅 프로그램, 게임) 

    OS(리눅스, 윈도우, 맥), 네트워크 인터페이스(LAN 드라이버, LAN 장비)

     

     

    SOCKET 라이브러리를 통해서 OS 계층 Hello, world 메세지를 넘긴다. 

    OS 계층에서는 TCP 정보를 생성해서 씌우고 이를 IP 에 전달한다. 

    IP 와 관련된 데이터들로 다시 감싸져 IP 패킷이 생성된다. 

    네트워크 인터페이스를 통해서 LAN 카드로 나갈 때 Ethernet frame 포함돼서 나간다. 

     

    ※ Ethernet frame : LAN 카드에 포함된 Mac 주소 (물리적 주소)

    ※ 패킷 : 수화물(패키지) + 덩어리(버킷) 합성 

     

     

    출발지 PORT, 목적지 PORT,  전송제어, 순서, 검증 정보 포함

     

    ■ TCP (Transmission Conrtrol Protocol - 전송 제어 프로토콜) 특징

     

    전송을 제어하는 역할

     

    - 연결지향 : TCP 3 way handshake (가상 연결)

    우선 연결을 하고 메세지를 보낸다. -> 연결된 곳으로만 보내게 됨

    - 데이터 전달 보증 : 메세지 누락 알 수 있음

    - 순서 보장

    - 신뢰할 수 있는 프로토콜

    - 현재는 대부분 TCP 사용

     

    * TCP 3 way handshake

     

    1. 클라이언트 -> 서버 SYN 메세지 보냄

    2. 서버 -> 클라이언트 SYN+ACK 메세지 보냄

    3. 클라이언트 -> 서버 ACK 메세지 보냄

    4. 데이터 전달

     

    이렇게 3번을 왔다갔다 하며 클라이언트 서버 둘 다 믿을 수 있는 상태가 됨.

     

    ※ 참고

    - SYN : 접속 요청

    - ACK : 요청 수락

    - 3번 ACK 처리 할 때 데이터 전송 가능하다. 

    - TCP 3 way handshake 돼서 연결이 됐다는 진짜 연결이 된 게 아니다. (가상 연결)

    개념적으로 연결이 된 것이다. 물리적 연결이 아니다. -> 논리적 연결

    나를 위한 전용 랜선이 연결된 것은 아니라는 것을 숙지하자

     

    * 데이터 전달 보증

     

    TCP 로 전달했을 때 서버가 데이터 전송 받았으면

    데이터를 잘 받았는 지 클라이언트에 이야기해준다.

    따라서 데이터 전달 보증이 된다. 

     

    * 순서 보장

     

    패킷 순서 잘못 보낸 곳부터 서버가 다시 보내라고 요청한다.

     

    ■ UDP 특징 (User Datagram Protocol - 사용자 데이터그램 프로토콜) 특징

    - 기능 거의 없음

    - 연결지향 x (TCP 3 way handshake 없음)

    - 데이터 전달 보증 x

    - 순서 보장 x

    - 데이터 전달 및 순서 보장되지 않지만 단순하고 빠름

    - IP 와 거의 같음 + PORT + 체크섬 정도만 추가

    - 애플리케이션에서 추가 작업 필요

     

    ※ IP 는 하나의 OS 에서는 모두 같기 때문에 여기서 여러 애플리케이션 구동 시,

    이에 대한 IP 패킷을 구분할 수 있는 방법이 바로 PORT 이다. 

    체크섬은 메세지에 대해 제대로 됐는지 검증해주는 데이터 이다. 

     

    https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

     

    모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런

    김영한 | 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연

    www.inflearn.com

    '개발 > HTTP' 카테고리의 다른 글

    (HTTP) 6 - HTTP 란?  (0) 2024.10.30
    (HTTP) 5 - URI 와 웹 브라우저 요청 흐름  (0) 2024.10.30
    (HTTP) 4 - DNS  (0) 2024.10.30
    (HTTP) 3 - PORT  (0) 2024.10.30
    (HTTP) 1 - IP (인터넷 프로토콜)  (0) 2024.10.30
Designed by Tistory.