이 글은 김영한님 ‘모든 개발자를 위한 HTTP 웹 기본 지식’ 강의를 듣고 작성합니다.
[1. 인터넷 네트워크] 강의에 해당된 내용을 정리하며 회고록을 작성합니다.
https://www.inflearn.com/course/http-웹-네트워크
인터넷에서 두 개의 컴퓨터는 어떻게 통신할까?
컴퓨터1에서 컴퓨터2에게 “Hello, world!”라고 보내면 컴퓨터2는 “OK”라는 대답을 해준다고 가정해보자.
여기에서 이 두 컴퓨터 사이에는 “인터넷”이라는 눈에 보이지 않는 통신세계가 있다!
인터넷망을 통해서 다른 컴퓨터에게 메시지를 보내야하는데, 수 많은 중간 노드들을 거쳐서 안전하게 목적지 컴퓨터에게 도착하려면 어떻게 해야할까?
여기에서 IP, TCP/UDP에 대해 알아가자!
더하여 간략하게 PORT, DNS도 소개한다.
인터넷 프로토콜(IP)은 인터넷에서 데이터 주소를 지정하고 라우팅하기 위한 요구 사항의 집합입니다. IP는 TCP 및 UDP를 비롯한 여러 전송 프로토콜과 함께 사용할 수 있습니다.
인터넷 프로토콜 역할
IP 패킷
IP 패킷은 전송 데이터를 둘러싸고 있으며, 출발지 IP, 목적지 IP, 기타 정보들을 가지고 있다.
클라이언트에서 전송 데이터와 출발 IP(100.100.100.1), 목적 IP(200.200.200.2) IP 패킷 정보를 통해 목적 서버에게 전달한다.
서버에서는 전송 데이터와 출발 IP(200.200.200.2), 목적 IP(100.100.100.1) IP 패킷 정보를 통해 다시 클라이언트에게 전송한다.
하지만! 여기서 중간에 패킷이 사라진다면? 패킷을 받을 대상이 없으면???
이를 보완해주고, 더 많은 정보를 담고있는 TCP/UDP가 있다.
먼저, TCP가 뭘까?
전송 제어 프로토콜(Transmission Control Protocol)
TCP는 IP 한계를 보완하여 안정적으로, 순서대로, 에러없이 데이터를 교환할 수 있도록 전송데이터를 감싸는 프로토콜이다.
인터넷 프로토콜 스택의 4계층
프로그램이 “Hello, world” 메시지를 생성하면 TCP 정보를 생성하고 메시지 데이터를 포함한다.(감싼다) 그 후, TCP 데이터를 포함하여(감싸고) IP 패킷을 생성한다.
이런 형태로 데이터를 전송하게 된다.
IP 패킷 안에 TCP와 관련된 정보가 들어있다. TCP에 관련된 정보는 출발지/목적지에 관한 PORT, 전송 제어, 순서, 검증 정보 등이 있으며, IP만으로 해결되지 않았던 비연결성, 비신뢰성 등을 해결해준다.
연결지향 TCP 3 way handshake가 뭘까?
3 way handshake는 데이터를 전송하기 전에 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
양쪽에서 ACK를 보내 우리 둘이 ‘연결’이 됐구나를 확인한다. 연결이 된 다음에 데이터를 전송하고, 요즘엔 3번 ACK에서 같이 데이터를 전송하기도 한다.
여기서 두 컴퓨터가 진짜 연결이 된 것이 아니라, 논리적으로 확인하는 과정이다.
사용자 데이터그램 프로토콜 (User Datagram Protocol)
보안과 신뢰성보다 전송 속도와 효율성이 더 중요한 경우 데이터를 전송하기 위해 IP과 함께 사용된 프로토콜입니다.
여기에서 TCP/UDP 세그먼트에 출발지 PORT, 목적지 PORT 정보를 가지고 있는데, PORT가 뭘까?
위와 같이 클라이언트가 게임도 하고, 화상통화도 하고 웹브라우저에도 요청을 해야하는 한 번에 둘 이상 연결을 해야한다면 어떡할까?
TCP/IP 패킷 정보에는 출발지 IP, 목적지 IP, 출발지 PORT, 목적지 PORT 등등 정보를 가지고 있다.
PORT는 같은 IP 내에서 프로세스를 구분한다. IP는 목적지 서버를 찾는거고, 그 서버 안에서 돌아가는 애플리케이션들을 구분하는 것이 PORT의 역할이다.
더하여, IP는 200.200.200.2 이런식으로 기억하기 어려운 숫자로 이루어져 있다. 또는, IP는 서버를 껐다 키면 변경될 수 있다. 이를 보완하기 위해 DNS가 있다.
도메인 네임 시스템 (Domain Name System)
도메인 명은 google.com 같은 전화번호부 같은 개념이다. 도메인 명을 IP 주소로 변환하여 IP 주소가 변경이 되어 찾지 못하는 경우를 보완할 수 있다.
💡 인터넷 프로토콜(IP)은 출발지IP, 목적지 IP 등 정보를 가지고 목적지 컴퓨터에 데이터를 송신하는 통신에 대한 규약을 의미한다. 하지만, IP는 중간에 패킷이 사라지거나 패킷을 받을 대상이 없어졌을 때의 한계점을 갖는다.
이를 보완하기 위해 TCP를 통해 PORT 정보, 전송 제어, 순서, 검증 정보 등으로 전송 데이터를 감싼다. 이 때, 3 way handshake 방식을 사용하는데, 이는 양쪽에서 ACK를 보내 연결을 확인하여 연결을 지향한다.
UDP는 TCP와 달리, 보안과 신뢰성보단 전송 속도와 효율성에 초점을 두고 데이터를 전송한다.