티스토리 뷰
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 특징
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) 또는 둘 다 추가로 분류될 수 있다.
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 메시지 전송
- 웹 브라우저가 HTTP 메시지 생성
- 소켓 라이브러리를 통해 전달
- TCP/IP 연결(IP, PORT)
- 데이터 전달
- TCP/IP 패킷 생성, HTTP 메시지 포함
- 패킷 정보가 인터넷으로 전송됨.
- 서버로 요청 패킷이 도착
- 서버는 패킷 정보에서 TCP/IP 패킷을 버리고 요청 메시지를 확인
- 서버에서 웹 브라우저의 요청에 따른 HTTP 응답 메시지를 송신
'HTTP' 카테고리의 다른 글
[HTTP] HTTP 기본 -2 (0) | 2022.04.11 |
---|---|
[HTTP] HTTP 기본 -1 (0) | 2022.04.07 |
- Total
- Today
- Yesterday
- 위상정렬
- API
- codedeploy
- dijkstra
- hoppy
- Network
- Test
- 알고리즘
- Android
- aws
- db
- Programming
- solid
- Java
- REST
- 안드로이드
- Singleton
- Spring
- 자료구조
- xml
- 소셜로그인
- TopologicalSort
- S3
- configuration
- mybatis
- HTTP
- C++
- IntelliJ
- BeanDefinition
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |