포스팅 목차
IP (Internet Protocol)의 문제점
- 비연결성
- 상대가 요청을 받을 수 있는 상태인지 확인하지 않음
- 비신뢰성
- 순서 보장 X
- 패킷 소실 가능성 O
- 프로그램 구분
- 한 컴퓨터 내에서 구동되는 여러 프로그램들 중 어떤 프로그램으로 데이터를 전송해야 하는지 구분할 수 없음
위에서 나타나는 문제를 해결하기 위해서 TCP, UDP가 등장
현재 HTTP가 주로 TCP/IP 위에서 동작하기 때문에 TCP 위주로 설명하겠음
TCP의 특징
- 연결 지향
- 3way-handshake
- 물리적으로 연결된 건 아님. 논리적 연결
- 데이터를 보낼 수 있는지 확인하는 정도
- 데이터 전달 보장
- 전송과정에서 소실된 데이터가 있으면 재요청함.
- 순서 보장
- 도착한 패킷들을 순서에 맞게 정렬
- 위의 특징들로 인해 신뢰할 수 있는 프로토콜
UDP의 특징
- 거의 기능 없음
- PORT 구분 정도
- 데이터 전달 및 순서가 보장되진 않지만 단순하고 빠름
3 way-handshake
Client와 Server 간에 통신할 준비가 되었는지 확인하는 과정
1
Client — SYN→ Server
클라이언트: 서버야 너 통신할 준비되었니?
Client — SYN→ Server
클라이언트: 서버야 너 통신할 준비되었니?
2
Client ←SYN + ACK— Server
서버: 응 나 통신할 준비됐어! 너도 준비됐어?
Client ←SYN + ACK— Server
서버: 응 나 통신할 준비됐어! 너도 준비됐어?
3
Client — ACK → Server
클라이언트: 응 나도 준비되었지!
Client — ACK → Server
클라이언트: 응 나도 준비되었지!
4
연결완료(위에서 말했듯이 물리적이 연결이 아닌 논리적 연결)
연결완료(위에서 말했듯이 물리적이 연결이 아닌 논리적 연결)
Port
한 컴퓨터 안에서 여러 프로세스가 동시에 작동할 수 있다. IP만으로 통신을 한다면 어떤 프로세스에서 수신해야 할 데이터인지 알 수 없다. 이를 구분하기 위해 데이터를 수신할 프로세스마다 port를 할당해서 수신한다.
0 ~ 65535: 할당 가능한 포트 번호 범위
0 ~ 1023: 아래와 같이 규약처럼 이미 사용하고 있는 포트. 사용하지 않는 것이 좋음
FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443
DNS(Domain Name System)
문자로 된 주소를 DNS 서버에 보내면 해당 IP를 돌려줌. 그 IP로 원하는 서버에 접근
URI(Uniform Resource Identifier)
통합 자원 식별자. 웹에서 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스
- URL(Uniform Resource Locator) : 흔히 웹 주소라고도 하며, 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약. URI의 서브셋
URL 형식
{scheme}://{hosts}/{url-path}?{query}
https://google.com/search?id=Teo
- URN(Uniform Resource Name) : 리소스 자체에 부여된 영구적이고 유일한 이름이며 변하지 않는다. URL과 달리 리소스 접근 방법과 웹 상의 위치가 표기되지 않는다.