Web

[HTTP 웹 기본 지식] 섹션1.인터넷 네트워크

Ella_K 2022. 11. 4. 17:33

※ 김영한 님의 인프런 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의 요약한 내용입니다.

인터넷 통신

  • 서버와 클라이언트는 복잡한 인터넷 망, 노드들을 거쳐 통신한다.

 

IP (Internet Protocol)

  • 패킷(Packet) 이라는 통신 단위로 지정한 IP 주소에 데이터를 전달한다.
  • IP 패킷 정보: 출발지 IP, 목적지 IP, 기타..., 전송 데이터
  • 클라이언트가 보낸 IP 패킷은 노드들을 거쳐 서버에 도착
  • 서버에서 응답 IP 패킷을 보내 노드들을 거쳐 클라인언트에 도착

😓 IP 프로토콜의 한계

1. 비연결성

  • 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모른다.
  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. (모르는채로 전송)

2. 비신뢰성

  • 중간 노드의 서버 문제가 생기면 패킷 소실
  • 전달할 데이터 크기가 너무 크면 끊어서 보내는데 (대략 1500bite) 패킷들은 중간에 다른 노드로 갈 수 있다. → 패킷 전달 순서 문제 발생

3. 프로그램 구분 불가능

  • 같은 IP를 사용하는 서버에 통신하는 애플리케이션이 여러개일 경우 구분 불가능하다.

 

TCP (Transmission Control Protocol)

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

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층
1. 프로그램이 메시지 생성 → 2. SOCKET 라이브러리를 통해 전달 → 3. TCP 정보 생성, 메시지 데이터 포함 → 4. IP 패킷 생성, TCP 데이터 포함 → 5. Ethernet frame 인터넷을 통해 서버에 전달

 

📌 TCP/IP 패킷 정보

  • 전송 데이터
  • TCP 정보: 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보..
  • IP 패킷 생성: 출발지 IP, 목적지 IP, 기타 ...

 

📌 TCP 특징

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

  • 연결한 다음에 메세지를 보낸다. 여기서 연결은 물리적 연결이 아닌 논리적 연결
  • 클라이언트 → 서버로 1. SYN (접속 요청)
  • 서버 → 클라이언트 2. SYN + ACK (요청 수락)
  • 클라이언트 → 서버 3. ACK
  • 서버 → 클라이언트 로 데이터 전송

2. 데이터 전달 보증

  • 클라이언트가 서버로 데이터를 전송하면 서버는 데이터를 받고, 클라이언트로 잘 받았다는 메세지를 보낸다.

3. 순서 보장

  • 서버에 패킷 순서가 잘못 오면 클라이언트에게 잘못된 순서부터 다시보내라고 메세지를 보낸다.

 

UDP (User Datagram Protocol)

  • 연결지향 X, 데이터 전달 보증 X, 순서 보장 X
  • 단순하고 빠름
  • IP 에서 + PORT, 체크섬 정도만 추가
  • 최적화 하기 위해서 TCP는 그대로 두고, UDP 위에 애플리케이션 레벨에서 추가 작업을 한다.

 

PORT

  • 같은 IP 내에서 프로세스 구분
  • 0 ~ 65535 할당 가능
  • 0 ~ 1023: 잘 알려진 포트
    • FTP : 20, 21
    • TELNET : 23
    • HTTP : 80
    • HTTPS : 443

 

DNS (Domain Name System)

  • IP는 기억하기 어렵고, 변경될 수 있다.
  • 도메인 명을 IP주소로 변환해주는 시스템
클라이언트 → DNS 서버에 도메인 명을 보냄
DNS 서버 → 클라이언트에 IP주소 응답
IP 주소로 클라이언트 → 서버 접속