본문 바로가기

기타/HTTP

[HTTP] 인터넷 네트워크 (잡한 인터넷 망에서 데이터를 어떻게 보낼까?)

  • 인터넷 통신
    • IP(Internet Protocol)
    • TCP, UDP
    • PORT
    • DNS

 

복잡한 인터넷 망에서 다른 사람에게 데이터를 어떻게 보낼까?

최소한의 규칙을 부여해서 데이터를 전달하는데, 클라이언트와 서버의 IP 주소를 이용한다.

 

IP (Internet Protocol)


  • 지정한 IP 주소에 데이터 전달, 정보를 주고받는 데 사용하는 정보 위주의 규약(프로토콜, Protocol)
  • 패킷이라는 통신 단위로 데이터 전달

IP 패킷

  • 패키지 + 덩어리의 합성어 데이터를 보낼 때 IP 패킷 규칙에 따라 보내게 된다.
  • 전송 데이터와, 데이터 출발 IP, 목적지 IP 등이 포함된다.
  • IP 패킷이 만들어지면, 인터넷 망의 노드들에 의해 최종 목적지 IP에 도달 되어 전송된다.
  • 목적지에서 정상적으로 데이터를 받았으면, 송신자도 패킷을 만들고 인터넷 망을 통해 출발 IP에게 전송한다.

 

 

한계가 있는데?

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 된다
    • 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모른다!
  • 비신뢰성
    • 중간에 패킷이 사라진다면? 패킷이 순서대로 안온다면?
  • 프로그램 구분
    • 같은 IP를 사용 하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

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


  • 애플리케이션 계층 : HTTP, FTP
  • 전송 계층 : TCP, UDP
  • 인터넷 계층 : IP
  • 네트워크 인터페이스 계층

 

  • 전송하고자 하는 메시지 데이터는 프로토콜 계층을 거쳐 TCP 정보, IP 정보, Ethernet frame 정보가 차례대로 감싸 진다.

 

TCP/IP 패킷 정보

  • 프로토콜에 의해 전송 데이터에 TCP 정보가 감싸 진다.
  • 출발지 외에 전송 제어, 순서, 검증 정보 등이 포함되어 신뢰 할 수 있다.

 

TCP (Transmission Control Protocol)


  1. 연결 지향 - TCP 3 way handshake 가상 연결
    • 양쪽에서 전송 요청과, 응답 요청을 받고 보내며 연결
    • 서버가 죽어있거나 문제가 있으면 연결이 되지 않는다.(2) 서버에서 응답 요청 ACK와 전송 요청 메시지 SYN을 전달
    • (3) 클라이언트에서 응답 요청 ACK를 전송해 서버와 연결
    • (1) 클라이언트에서 서버로 전송 요청 SYN 전달

2. 데이터 전달 보증

  • 패킷이 누락 됬는지 확인 할 수 있다.
  • TCP는 데이터 전송을 받으면, 클라이언트한테 응답 메시지를 전달

3. 순서 보장

  • 큰 데이터일 경우 패킷 분할 전송하고, 서버에서 TCP의 순서 정보로 패킷 순서를 확인한다.

4. 신뢰할 수 있는 프로토콜

5. 현재는 대부분이 TCP를 사용한다.

 

 

 

UDP (User DataGram Protocol)


  • 연결 지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 유사하지만, Port, CheckSum 정도만 추가
  • 애플리케이션에서 추가 작업이 필요하다.

 

Port


  • 여러 패킷 전송 시 어떤 패킷으로 확인하기 위함, 같은 IP 내에서 포트 정보로 프로세스를 구분
    • 0 ~ 65535 할당 가능
    • 0 ~ 1023 잘 알려진 포트, 사용하지 않는 것이 좋음
    • FTP - 20,21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443

 

DNS (Domain Name System)


  • 일종의 전화번호부 도메인 명을 IP 주소로 변환

 

 

[인터넷 네트워크 정리]

  • 인터넷에서 데이터를 전송하기 위해서는 인터넷 통신이 필요하다. 그것을 IP(Internet Protocol)이라 하는데!
    • IP로는 신뢰성이 없고, PORT도 없어 프로세스를 구분하지 못한다.
  • 그래서! TCP 프로토콜로 신뢰성을 보증하고, Port정보로 프로세스를 구분할 수 있다.
    • UDP는 IP란 유사하지만, 다른 점은 PORT 정보만 있다.
  • DNS는 IP는 외우기 어려우니 도메인 명을 사용해서 구분할 수 있게 한다.

 


REFERENCE

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

300x250

'기타 > HTTP' 카테고리의 다른 글

HTTP 헤더1 - 일반 헤더  (0) 2021.09.02
[HTTP] 상태 코드  (0) 2021.08.01
[HTTP] HTTP 메서드  (0) 2021.07.23
[HTTP] HTTP(HyperText Transter Protocol) 기본  (0) 2021.07.21
URI와 웹 브라우저 요청 흐름 알아보기  (0) 2021.07.21