HTTP : IP, TCP, UDP

김선미·2022년 9월 29일
0

인터넷

  • 클라이언트와 서버 컴퓨터를 연결하는 역할
  • 클라이언트와 서버가 멀리 떨어져있기 때문에 복잡한 인터넷 망을 거쳐서 연결됨
  • 이때 적용되는 인터넷 규칙을 IP (Internet Protocol) 이라고 한다.

IP (Internet Protocol, 인터넷 규칙)

  • 지정된 IP 주소를 부여한다.
  • 패킷(Packet)이라는 단위로 데이터를 전달한다.
    • 패킷 : Pakage + bucket 합성어
    • IP 패킷 정보 : 출발지 IP, 목적지 IP, 전송 데이터/응답 메세지, 기타

IP의 한계

- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 : 패킷이 중간에 사라지거나 순서대로 도착하지 않을 경우
- 프로그램 구분 : 같은 IP 주소를 사용하는 서버에서 통신하는 애플리케이션이 두개 이상일 경우
- TCP를 통해 해결

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

  • (웹 브라우저, 채팅, 게임 등) 애플리케이션 계층 - HTTP, FTP (SOCKET 라이브러리)
  • (OS)
    • 전송 계층 - TCP, UDP
    • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층 - LAN 드라이버, LAN 장비 (LAN 카드를 통해 인터넷 연결)

인터넷 프로토콜 실행 순서

  1. 애플리케이션 : 데이터 생성, SOCKET 라이브러리를 통해 전달
  2. TCP : 데이터 + TCP 정보 생성 (TCP 세그먼트 생성)
  3. IP : 데이터 + TCP + IP 정보 생성(IP 패킷 생성)
  4. LAN : LAN 카드를 통해 IP 패킷 + Ithernet frame 생성, 인터넷 연결하여 서버에 전달

TCP(Transmission Control Protocol, 전송 제어 규칙)

  • TCP 세그먼트 정보 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보
  • 연결 지향 : TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증 : 데이터 전송 성공시 서버에서 응답 반환
  • 순서 보장 : 데이터 전달 순서가 TCP 세그먼트 정보와 다르면 데이터 반환, 재전송 명령
  • 신뢰할 수 있는 프로토콜, 현재는 대부분 TCP 사용

TCP 3 way handshake

  1. 클라이언트->서버 : SYN (synchronize, 클라이언트 연결 정보) 전달
  2. 서버->클라이언트 : SYN (서버 연결 정보) + ACK (클라이언트 연결 완료 정보) 전달
  3. 클라이언트->서버 : ACK (서버 연결 완료 정보) 전달
  • 3 way handshake 완료되면 데이터 전송, 미실행시 데이터 전송 불가
  • 참고 : ACK와 함께 데이터 전송 가능
  • 가상 연결 상태이다. (handshake가 실행되면 연결이 되었다고 논리적으로 가정함)

UDP (User Datagram Protocol)

  • TCP와 같은 계층에서 사용됨
  • 하얀 도화지에 비유됨(기능이 거의 없음)
  • IP와 거의 같음 + PORT 정보, 체크섬 추가
  • 단순하고 빠름
  • TCP는 점유율이 높아 작업 변경이 어렵지만 UDP를 따로 사용하며 직접 작업을 최적화 할 수 있음, 애플리케이션에서 추가 작업 필요
  • 최근 HTTP3 에서 3way handshake 생략 등의 작업 최적화를 위해 UDP를 사용함

PORT

  • 한번에 둘 이상의 애플리케이션을 연결할 때 사용

참고 : 모든 개발자를 위한 HTTP 지식 - 김영한
강의를 듣고 공부한 내용을 정리했습니다.

profile
백엔드 개발 공부

0개의 댓글