티스토리 뷰

HTTP

[HTTP] 인터넷 네트워크

최MAX 2022. 4. 6. 00:49

IP Internet Protocol

인터넷 프로토콜 역할

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

 

클라이언트 to 서버 통신

클라이언트 IP: 100.100.100.1

서버 IP: 200.200.200.2

 

서버 to 클라이언트 통신

 

송/수신 간에 패킷은 다른 경로로 이동할 수 있다. 

 

 


 

IP 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 중간에 패킷이 사라질 수 있다.
    • 패킷이 순서대로 도착하지 않을 수 있다.
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 어떤 방식으로 구분하는가?

 

 

통신 대상이 서비스 불능일 때 패킷 전송

 

 

패킷 손실

 

 

패킷 전달 순서 문제

본래 의도한 데이터와 순서가 바뀜

 

 

 

 

이와 같은 문제 해결을 위한 TCP/UDP!!!

 


 

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

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

 

 


 

IP 패킷 정보

TCP/IP 패킷 정보

초록색 부분: TCP 세그먼트

 

 


TCP 특징 

Transmission Control Protocol, 전송 제어 프로토콜

  • 연결 지향 - 3 way handshake
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰성

 

3 way handshake

SYN: 접속 요청

ACK: 요청 수락

(3. ACK: ACK과 함께 데이터 전송 가능)

 

상대방으로 부터 ACK이 없을 때 문제가 있다고 판단하고 데이터 전송을 멈출 수 있음.

 

 

 


 

데이터 전달 보증

서버에서 데이터 올바른 데이터 수신에 따른 응답을 보냄.

 

 

 

순서 보장

패킷 마다 timeout, ack 등 사용하는 걸로 기억함

 

 


 

UDP 특징

User Datagram Protocol 사용자 데이터그램 프로토콜

 

  • 기능이 거의 없음
  • 연결 지향 X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 비신뢰성
  • 단순하고 빠름
    • IP와 거의 같다. PORT, checksum 정도만 추가
    • 애플리케이션에서 추가 작업 필요

 


 

PORT

위에서 언급한 둘 이상의 연결이 필요할 때 어떻게 구분해야 하는가

 

위의 TCP/IP 패킷 정보를 다시 보면

출발지/목적지 PORT가 존재한다!

 

 

 

같은 IP 내에서 프로세스 구분

출발지 IP, PORT를 모두 적어서 전송하기 때문에 수신측에서 구분이 가능하다.

IP가 아파트라면, 포트는 동/호수!

 

PORT는 0~65535 할당 가능, 0~1023은 사용하지 않는 것이 좋음


DNS

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

 

Domain Name System (DNS)

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

 

예시)

IP: 200.200.200.2 = Domain Name: google.com

 


 

URI

Uniform Resource Identifier

 

URI는 로케이터 (Locator), 이름 (Name) 또는 둘 다 추가로 분류될 수 있다.

URL, URN은 URI의 한 종류이다.


 

URI 단어 뜻

  • Uniform: 리소스 식별하는 통일된 방식
  • Resource: 자원, URI로 식별할 수 있는 모든 것
  • Identifier: 다른 항목과 구분하는데 필요한 정보. 식별자

 

URL, URL 단어 뜻

  • URL - Locator: 리소스가 있는 위치를 지정
  • URN - Name: 리소스에 이름을 부여
  • 위치는 변할 수 있지만, 이름은 변하지 않는다.
  • 하지만, URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음

 


URL 전체 문법

  • shceme://[userinfo@]host[:port][/path][?query][#fragment]
  • https://www.google.com:443/search?q=hello?hl=ko
  • 프로토콜//호스트명:포트번호/path/쿼리 파라미터(q=hello&hl=ko)

 

query

  • key=value 형태
  • ?로 시작, &로 추가 가능
  • query parameter, query string 등으로 불림. 웹 서버에 제공하는 파라미터, 문자열 형태

 

#fragment

  • html 내부 북마크 등에 사용
  • 서버에 전송하는 정보 아님

 


웹 브라우저 요청 흐름

 

HTTP 요청 메시지

 

GET /search?q=hello&hl=ko HTTP/1.1

Host: www.google.com  

 

 

HTTP 메시지 전송

  1. 웹 브라우저가 HTTP 메시지 생성
  2. 소켓 라이브러리를 통해 전달
    1. TCP/IP 연결(IP, PORT)
    2. 데이터 전달
  3. TCP/IP 패킷 생성, HTTP 메시지 포함
  4. 패킷 정보가 인터넷으로 전송됨.
  5. 서버로 요청 패킷이 도착
  6. 서버는 패킷 정보에서 TCP/IP 패킷을 버리고 요청 메시지를 확인
  7. 서버에서 웹 브라우저의 요청에 따른 HTTP 응답 메시지를 송신

 

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 기본 -2  (0) 2022.04.11
[HTTP] HTTP 기본 -1  (0) 2022.04.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함