인프런 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하고 정리한 글입니다.
네트워크 계층의 프로토콜로, 인터넷 망에서 클라이언트가 보낸 메세지를 목적지까지 보내기 위해 IP헤더에 출발지와 목적지 IP 주소와 함께 전송할 데이터를 담아서 보낸다.
인터넷에 전송된 패킷은 여러 노드를 거쳐 목적지(서버)에 도달하게 되며 서버는 메세지를 잘 수신했다는 정보를 담아 다시 클라이언트로 보낸다.
1) 비연결성
2) 비신뢰성
3) 프로그램 구분 모호
IP 프로토콜의 한계점을 보완해준다.
애플리케이션 계층에서 전달된 정보(payload)에 TCP 정보를 생성하여 포함시킨다.
전송 제어 프로토콜(Transmission Control Protocol)
- 클라이언트에서 서버에 연결 요청을 하기위해, SYN(Synchronizer) 데이터를 보낸다.
- SYN + ACK: 서버에서는 요청을 받으면 정상적으로 받았다는 응답 메세지(ACK)와 함께 접속 요청 메세지(SYN)를 같이 보낸다.
- ACK: 클라이언트에서는 SYN+ACK을 받고 서버에 요청을 잘 받았다는 ACK을 전송한다. 이제 양측이 연결이 되었음을 보장 할 수 있게 된다.
- 데이터 전송: 연결이 되고 나면 데이터를 송신 혹은 수신할 수 있다.
(실제 연결된 것은 아니고, 논리적으로 연결된 것이다.)
(최근에는 최적화되어 3번 ACK 단계에서 데이터를 보내기도 한다.)
사용자 데이터그램 프로토콜(User Datagram Protocol)
체크섬?
중복 검사의 한 형태로 전송되는 헤더 및 데이터의 무결성을 보장하기 위해 사용된다.
IP가 인터넷 세계에서 논리적인 내 컴퓨터의 주소라면, PORT는 내 컴퓨터내의 수많은 애플리케이션의 식별자가 되는 경로이다. (내 컴퓨터 IP가 아파트라면, 포트번호는 동 호수와 비슷한 맥락이다. )
PORT는 0 ~ 65535까지 할당이 가능하다.
단, 0 ~ 1023 까지는 이미 일반적으로 사용되는 포트이기에 사용하지 않는게 좋다.
- 잘 알려진 포트 (0 ~ 1023) - 국제 도메인 관리기구에 통제
- FTP - 20, 21 (TCP)
- SSH - 22 (TCP)
- 텔넷 - 23 (TCP)
- SMTP - 25 (TCP)
- DNS - 53 (TCP/UDP)
- DHCP - 67 (UDP)
- HTTP - 80 (TCP)
- HTTPS - 443 (TCP)
- 등록 포트 (1024 ~ 49151) - 국제 도메인 관리기구에 등록
- MySQL - 3306
- PostgreSQL - 5432
도메인 네임 시스템(Domain Name System)
IP주소는 외우기도 힘들고 변경될수도 있다.
그래서 이런 IP 주소들을 KEY/Value로 우리가 읽기에 가독성도 좋고 외우기도 좋은 도메인을 알아서 IP주소로 매칭하여 찾아주는 DNS 서버가 만들어졌다.
1) 클라이언트에 google.com, naver.com 과 같은 도메인 이름으로 요청을 보낸다.
2) DNS 서버에서는 해당 도메인에 해당하는 IP를 매칭해 응답한다.
3) 해당 IP로 접속한다.
(윈도우에서는 기본적으로 DNS서버를 자동으로 받도록 설정되어, 사용하는 통신사의 DNS서버를 사용하게 된다.)