현재 대부분의 웹애플리케이션은 HTTP(Hypertest Transfer Protocol)를 통해 동작한다. HTTP는 요청 및 응답흐름을 사용해 인터넷에서 데이터를 전송하는 애플리케이션 수준의 프로토콜이며, IP 프로토콜 위에서 동작하며 HTTP 요청과 응답은 IP 패킷을 통해 전송된다.
그럼 IP 와 IP 패킷에 대해 자세하게 알아보자.
IP ( Internet Protocol )
- 지정한 IP 주소에 데이터 전달
- 패킷(packet)란 통신 단위로 데이터를 전달
IP 패킷 정보
IP 패킷에는 헤더필드와 데이터필드로 나누어진다.
데이터필드에는 TCP, UDP아 같은 상위 계층에서 전달된 PDU 가 삽입되어 있다.
헤어필드에는 패킷을 목적지까지 전송하기 위해 IP 계층에서 필요한 값들이 포함되어 있으며, 여기에 출발지 IP주소와 도착지 IP주소가 들어있다.
IP 프로토콜의 한계
- 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성: 중간에 패킷이 사라지면? (패킷 유실) 패킷이 순서대로 안오면?(패킷이 너무 커서 끊어서 보내는 상황일 때) 해결 X
- 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? 해결 X
=> 이러한 이유로 TCP/UDP 개념이 나왔음. IP 프로토콜에서 조금 보완해주는 역할이라고 생각하면 됨.
현재 인터넷 프로토콜 스택의 4계층
TCP (Transmission Control Protocol) 전송 제어 프로토콜
- 연결 지향: TCP 3 way handshake (가상연결)
- 데이터 전달 보증 O (메시지가 누락되었다는 것을 알 수 있음.)
- 순서 보장 O
- 신뢰할 수 있는 프로토콜
- 현재 대부분 TCP 사용
TCP 3 way handshake 과정
1) 클라이언트가 서버에게 연결 요청 SYN 세그먼트를 전송한다.
2) 서버는 SYN 요청 받고 요청을 수락한다는 ACK 세그먼트를 전송한다. 동시에 연결 요청하는 SYN 세그먼트를 전송한다.
3) 클라이언트는 서버의 SYN 요청에 대한 ACK 세그먼트를 전송하여 연결이 완료된다. 서로 연결된 것을 인식할 수 있음.
4) 서로 데이터를 주고 받는다.
-> 물리적으로 연결된 것이 아니라 논리적으로 연결이 되었다는 것임.
UDP (User Datagram Protocol) 사용자 데이터그램 프로토콜
- 연결 지향: TCP 3 way handshake X
- 데이터 전달 보증 X (메시지가 누락되었다는 것을 알 수 없음.)
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
- IP와 거이 같다. 여기서 port 개념만 추가된 것. 그리고 검증을 위한 체크섬 정도만 추가된 것.
- 최근에 각광받고 있음.
PORT
하나의 IP를 가진 하나의 컴퓨터에 여러가지 애플리케이션이 돌아가고 있다. 그럼 어떤 애플리케이션과 통신할 것인지가 관건이다.
그래서 같은 IP 내에서 프로세스를 구분하기 위한 개념으로 port를 사용한다.
- 0~65535 범위를 할당 가능
- 0 ~ 1023: 잘 열려진 포트, 사용하지 않는 것이 좋다.
FTP:20, 21 / TELNET:23 / HTTP:80 / HTTPS:443
DNS (Domain Name Server)
IP는 외우기도 어렵고 변경될 가능성이 크다. 그래서 등장한 것이 DNS이다.
이번에는 두 서버가 통신하기 위해 필요한 간단한 네트워크 개념에 대해 다뤄보았다. 다음 게시물에서는 URI 와 웹브라우저 요청 흐름에 대해 알아보겠다.
'Network' 카테고리의 다른 글
[ HTTP ] HTTP 란? (0) | 2024.03.19 |
---|---|
[ HTTP ] URI 와 웹브라우저 요청 흐름 (0) | 2024.03.18 |
[ Network ] DNS 패킷 분석 (Wireshark) (0) | 2024.03.16 |
[ Network ] MPLS 와 SD-WAN (0) | 2024.03.15 |
[ Network ] VLSM 이란? (0) | 2024.03.14 |