김영한님의 HTTP 웹 기본 지식 강의를 보기 시작했습니다.
같은 정보라도 사람마다 설명하는 방식이 다르기 때문에 다양한 CS 책 등을 비교해서 보는 편인데, 이번 강의를 보니 흩어져있는 지식 파편들이 한 곳에 정리되는 느낌입니다.
인터넷 통신에서 기본이 되는 IP, TCP, UDP, PORT, DNS를 정리해보겠습니다.
인터넷은 먼 거리에 있는 클라이언트와 서버를 연결합니다.

데이터는 인터넷이라는 복잡한 노드들로 이루어진 인터넷 망을 통과해 전달됩니다.
클라이언트와 서버가 이런 데이터를 주고받기 위해 사용하는 것이 IP 주소입니다.

지정 IP주소로 데이터를 전달하는 것이며, 패킷이라는 통신 단위로 데이터를 전달합니다.

전송할 데이터를 IP 패킷에 감싸서 보냅니다. 이 패킷에는 출발지 IP, 목적지IP 등등의 정보가 들어있습니다.
IP 프로토콜에는 명확한 단점이 있습니다.
1. 비연결성
TCP는 이런 IP의 한계를 해결하는 프로토콜입니다.

인터넷 프로토콜은 4계층으로 나뉘어 애플리케이션 계층부터 전송 계층, 인터넷 계층, 네트워크 인터페이스 계층으로 아래로 내려오며 통신을 하는 것입니다.

위의 과정처럼, 전송할 데이터를 TCP정보로 먼저 감싼 다음에 IP 패킷을 생성하는 구조입니다. TCP정보에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 들어있습니다. 이러한 TCP 정보들이 IP의 한계점을 해결합니다.

이 때, 3way handshake는 개념적, 논리적 연결이라는 것에 주의합니다.

데이터의 전달을 보증합니다. 상대가 못 받았는지 알 수 있습니다.

패킷의 순서를 보증합니다.

IP와 거의 같습니다. TCP 같은 검증 과정이 없기 때문에 데이터 전달 순서가 보장되지 않지만, 단순하고 빠릅니다.
PORT와 체크섬(데이터 검증)이 추가된 형태입니다.

같은 IP 내에서 프로세스를 구분하기 위한 방법입니다.
예를 들어, 사용자가 컴퓨터에서 유튜브에서 음악을 듣고, 게임을 하는 경우입니다.
패킷이 통신할 서버를 찾는 것이라면, PORT는 그 서버 내의 여러 어플리케이션(ex.게임, 음악)을 구분하는 것입니다.
IP는 변경될 수 있습니다.
google.com, naver.com 과 같은 도메인 이름을 지정하면 그 이름을 IP 주소로 변환합니다. 전화번호부와 비슷합니다.