클라이언트와 서버는 수많은 노드로 연결된 복잡한 인터넷 망을 통해서 서로 메세지를 전송한다.
메세지가 수많은 노드를 거쳐서 목적지로 전송될 때 특정한 규칙을 통해 전송된다. 이를 이해하기 위해선 IP(인터넷 프로토콜)에 대해서 알아야 한다.
IP(Internet Protocol 인터넷 프로토콜)
1. 역할
- 지정한 IP 주소(IP Address)에 데이터를 전달한다.
- 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
2. IP 패킷 정보
IP 패킷 정보에는 출발지 IP, 목적지 IP, 전송 데이터가 포함된다.
- 클라이언트 패킷 전달 : IP 패킷을 만들어서 던진다. 노드끼리 이 패킷을 전달하다가 최종적으로 목적지에 다다른다.
- 서버 패킷 전달 : 최종 목적지에서 잘 받았다면 똑같이 IP 패킷을 다시 출발지에 던진다.
3. 한계
- 비연결성 : 패킷을 받은 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다 -> 대상 서버가 패킷을 받을 수 있는 상태인지 알 수 없다.
- 비신뢰성 : 중간에 패킷이 사라지거나, 패킷을 여러 개 던졌을 때 순서대로 도착하지 않을 수 있다.
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신되는 애플리케이션이 여러 개일수 있다.
인터넷 프로토콜 스택의 4계층
인터넷 프로토콜 스택은 위 사진처럼 이루어져 있다.
이를 실제 상황에 적용해보면 다음과 같다.
TCP(Transmission Control Protocol 전송 제어 프로토콜)
1. 특징
- 연결 지향 : 상대와 연결이 됐는지 안됐는지 확인 후 메세지를 전송한다.
- 데이터 전달 보증 : 데이터가 누락되면 알 수 있다.
- 순서 보장
-> TCP는 신뢰할 수 있는 프로토콜이다. 현재는 대부분 TCP를 사용한다.
2. TCP 3 way handshake
1. TCP로 연결하면 우선 클라이언트에서 서버로 SYN 메세지를 보낸다.
2. 서버에서 클라이언트로 ACK와 함께 SYN을 보낸다.
3. 다시 클라이언트에서 서버로 ACK를 보낸다.
-> 위 과정이 끝나면 서로 연결이 됐음을 인식할 수 있다.
4. 연결이 다 되면 데이터를 전송한다. 클라이언트에서 서버로 ACK를 보낼 때(위 3번 과정) 데이터도 같이 보낼 수 있다.
-> 여기서 서버와 클라이언트가 연결된 것은 논리적인 연결이지 물리적인 연결은 아니다.
UDP(User Datagram Protocol 사용자 데이터그램 프로토콜)
- UDP는 하얀 도화지에 비유된다(기능이 거의 없다).
- 3 way handshake가 없다.
- 데이터 전달이 보증되지 않는다.
- 순서도 보장되지 않는다.
- 대신 단순하고 빠르다.
-> IP와 거의 유사하다. 다만, PORT와 체크섬이 추가됐다.
-> 애플리케이션에서 추가 작업이 필요하다.
*체크섬 : 메세지에 대해서 제대로 맞는지 검증해주는 데이터
PORT
- 하나의 IP에 여러 개의 애플리케이션이 실행될 때, IP로 여러 패킷이 오는데 이때 애플리케이션을 구분할 때 사용된다.
- 0~1023 : 잘 알려진 포트. 이 번호로는 사용하지 않는 것이 좋다.
- 0~65535 : 할당 가능.
DNS(Domain Name System)
- IP는 기억하기 어렵다.
- IP는 변경될 수 있다.
-> 따라서 DNS 서버에 도메인 명을 등록하여 사용한다.
클라이언트가 DNS 서버에 원하는 도메인 명의 IP 주소를 요청하면 이를 DNS 서버에서 응답해주고, 해당 IP 주소를 통해 서버에 접속한다.
* 본 글은 인프런 김영한님 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'에 기반하여 작성하였습니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] URI와 웹 브라우저 요청 흐름 (0) | 2022.03.02 |
---|