본문으로 바로가기

[HTTP] 인터넷 네트워크

category Web/HTTP 2022. 3. 9. 20:04

인터넷 통신

 

인터넷에서 클라이언트와 서버는 어떻게 통신할까?

복잡한 인터넷 망에서 어떤 규칙으로 어떻게 안전하게 메시지를 전달할까? 

 


IP(Internet Protocol)

 

IP 역할

 

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

 

1. 클라이언트와 서버는 IP 주소를 부여받는다.

2. IP 패킷 정보(출발지 IP + 목적지 IP + 기타 + 전송 데이터)를 이용하여 IP 패킷을 만든다.

3. 클라이언트는 패킷을 인터넷 망에 전달하고, 노드끼리 패킷을 전달하면서 목적지 IP에 도달한다.

4. 서버는 동일하게 IP 패킷(출발지 IP + 목적지 IP + OK)을 클라이언트에게 전달한다.

 

 

IP 프로토콜의 한계

 

  • 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송(클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 아닌지 모름)
  • 비신뢰성: 중간에 패킷이 사라지거나 순서대로 패킷이 오지 않을 때 해결 불가능(패킷 소실, 패킷 전달 순서 문제 발생)
  • 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분 불가능

 

 


TCP, UDP

IP 프로토콜의 문제점을 해결

 

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

 

  • 애플리케이션 계층(Application Layer) - HTTP, FTP
  • 전송 계층(Transport Layer) - TCP, UDP
  • 인터넷 계층(Internet Layer) -IP
  • 네트워크 인터페이스 계층(Network Interface Layer)

1. 채팅 프로그램으로 "Hello, world!" 메시지를 생성

2. 소켓 라이브러리를 통해OS 계층에 메시지를 넘김

3. OS 계층에서 메시지 데이터를 포함한 TCP 정보를 생성

4. TCP 데이터를 포함한 IP 패킷을 생성

5. 네트워크 인터페이스에서 LAN 카드를 통해 나갈 때 Ethernet frame이 포함되어서 전달

 

IP 패킷: 출발지 IP, 목적지 IP, 기타

TCP 세그먼트: 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 ...

TCP/IP 패킷 정보: IP 패킷 + TCP 세그먼트 + 전송 데이터

 

 

TCP(Transmission Control Protocol) 특징

 

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

 

  • 연결 지향 - TCP 3 way handshake(가상 연결) : 연결을 먼저 하고 메시지 전송
  1. 클라이언트에서 서버로 SYN(접속 요청) 메시지를 전송
  2. 서버에서 ACK(요청 수락) 메시지를 클라이언트에게 보내면서 SYN을 함께 전송
  3. 클라이언트가 서버에 ACK 전송
  4. 연결된 후 데이터 전송
  • 데이터 전달 보증 : 메시지를 보냈을 때 누락되면 확인 가능
  1. 클라이언트가 서버에 데이터를 전송
  2. 서버가 클라이언트에게 데이터를 잘 받았다고 응답
  • 순서 보장
  1. 클라이언트에서 패킷1, 패킷2, 패킷3 순서로 서버에 전송
  2. 서버에 패킷1, 패킷3, 패킷2 순서로 도착
  3. 서버가 클라이언트에게 패킷2부터 다시 보내라고 전송

 

UDP(User Datagram Protocol) 특징

 

  • 기능이 거의 없음
  • 연결지향, 데이터 전달 보증, 순서 보장 -> 모두 제공  X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 동일 + PORT + 체크섬
  • 애플리케이션에서 추가 작업 필요

 


PORT

IP만 이용하면 클라이언트가 여러 개의 서버와 통신해야 할 때, 어디에서 필요한 패킷인지 구분할 수가 없다.

 

IP는 목적지 서버를 찾고, 같은 IP 내에서 돌아가는 애플리케이션(프로세스)을 구분하는 것이 PORT

TCP/IP 패킷 : 출발지(IP, PORT) + 목적지(IP, PORT) + 전송 데이터

 

  • 0 ~ 65535 할당 가능, 0 ~ 1023은 잘 알려진 포트로 사용하지 않는 것이 좋음
  • FTP : 20, 21
  • TELNET: 23
  • HTTP: 80
  • HTTPS: 443

 


DNS(Domain Name System)

IP는 기억하기 어렵고 변경될 수 있다.

DNS는 전화번호부 같은 서버를 제공해주어 도메인 명을  IP 주소로 변환할 수 있게 해준다.

 

 

DNS 사용

 

1. DNS 서버에 도메인을 등록 

2. 클라이언트가 도메인 명으로 접근하면 DNS 서버가 IP 주소와 함께 응답

3. 클라이언트는 받은 IP 주소로 서버에 접근

 

 

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

[HTTP] 상태코드  (0) 2022.03.15
[HTTP] 메서드 활용  (0) 2022.03.11
[HTTP] 메서드  (0) 2022.03.11
[HTTP] 기본  (0) 2022.03.10
[HTTP] URI  (0) 2022.03.09