개요
6개의 프로토콜(TCP,UDP,ICMP,ARP,SNMP,DHCP)을 정리해보고자 한다.
TCP
- Transmission Control Protocol
- OSI 7 Layer에서 4계층에 속하는 프로토콜로서 컴퓨터 프로세스 간 데이터를 순서대로 에러 없이 교환할 수 있는 프로토콜이다.
<출처: http://www.ktword.co.kr/test/view/view.php?no=1889>
사용 목적
기존에 사용하던 회선 교환 방식이 패킷 교환 방식으로 전환되면서 많은 문제점들이 발생했었다.
경로가 정해져있는 회선 교환 방식과는 달리 경로가 정해져 있지 않은 패킷 교환 방식은 중간에 데이터가 유실되거나 딜레이 되는 등 신뢰성이 떨어진다는 문제점이었다.
이러한 점들을 보장하고 안정적으로 네트워크 통신이 될 수 있게 해주는 통신 규약이 TCP
이다.
연결 시 동작 방식 (3-way Handshake)
- 1. Client는 Server와 연결을 위해
SYN
패킷을 보낸다. - 2. Client의 연결 요청(
SYN
)에 대해 수신 확인 응답(ACK
)과 클라이언트에게로 연결 요청(SYN
)을 한다. - 3. Server로의 연결 요청(
SYN
)을 받은 Client는 수신 확인 응답(ACK
)을 보내어 최종적으로 연결이 수립된다.
연결 해제 시 동작 방식 (4-way Handshake)
- 1. Client가 Server에게 연결을 종료하겠다는
FIN flag
를 전송. - 2. Server는 확인 메시지를 보내고 통신이 끝날 때까지 기다림.(
CLOSE_WAIT
) - 3. Server가 통신이 끝나면 Client에게 끝났다는
FIN flag
를 전송함. - 4. Client는 수신 확인 되었다는
ACK
메시지를 보내면서 통신을 종료하게 됨.
TCP Control Flag
- URG: 긴급한 데이터인지 표기
- ACK: 전송 확인 응답/승인
- PSH: 수신처리 이후, 상위 프로세스로 처리
- RST: 강제 종료
- SYN: 전송 캐시
- FIN: 정상 종료
특징
- 연결 지향 프로토콜 (Connection Oriented Protocol)
- 가상회선 방식의 스트림 기반 전송으로 논리적으로 데이터의 전송 순서를 보장해줌.
- 신뢰할 수 있는 프로토콜 (Reliable Protocol)
- 흐름 제어: stop & wait 기법, Sliding Window 방식
- 혼잡 제어: 혼잡발생 시 전송률 최소화
장단점
- 1. 연결지향적으로 안정적이고 높은 신뢰성 보장.
- 2. 연결지향적이다보니 UDP에 비해 많은 패킷이 발생하여 속도가 느림.
UDP
- User Datagram Protocol
- OSI 7 Layer에서 4계층에 속하는 프로토콜로서 데이터를 Datagram 단위로 처리하는 통신 프로토콜
<출처>
TCP와 UDP의 통신 방식 차이
<출처: https://coconuts.tistory.com/33>
- TCP는 사전에 3-way Handshake를 통해 서로 간에 신뢰 있는 데이터 전송을 보장함.
- UDP는 요청이 들어오면 상대방의 수신 응답 여부 상관 없이 일단 보내는 Best Effort 방식
사용 목적
- TCP는 연결지향으로써 신뢰성 있는 통신 프로토콜이지만, 실시간 스트리밍 서비스에서는 속도 면에서 문제가 많다.
- TCP의 흐름 제어 기능으로 데이터 전송 양이 고정되어 있기 때문에 스트리밍 서비스 환경에서는 적합하지 못하다. 따라서 UDP 프로토콜이 자주 사용된다.
특징
- 1. TCP와 다르게 비연결 지향형 서비스
- 실시간 데이터를 전송해야하거나 재전송이 필요 없는 상황에 적합.
- 단순 데이터 요청/응답만 필요한 경우에 사용
장단점
- TCP에 비해 속도 우수 (헤더가 단순하여 헤더 처리에 시간이 들지 않음)
- 비연결지향형이라 TCP에서 제공하는 흐름제어, 혼잡제어, 순서제어 등의 기능이 없음.
- 보안 취약 (Sniffing을 통해 전송 내용 엿보거나, Spoofed 상태의 봇을 사용하여 UDP Flooding, DDoS 공격 등이 들어올 수 있음)
DHCP
- Dynamic Host Configuration Protocol
- 네트워크 안의 컴퓨터 IP와 네임서버주소, 게이트웨이 주소를 동적으로 할당하기 위한 프로토콜이다
사용 목적
- 기존에는 네트워크 설정 시 관리자가 직접 시스템적으로 클라이언트의 네트워크 설정을 해줘야 했다.
- 하지만 네트워크가 점점 커져감에 따라 클라이언트마다 네트워크 설정을 해주기가 부담스러워졌다.
- 그래서 DHCP가 개발되었고 이는 빠르게 클라이언트의 네트워크 설정이 가능하게 되어 최종적으로 자원의 효율적 사용이 가능하게 되었다.
구성 요소
<출처: https://lhh3520.tistory.com/285>
- 1. DHCP Client
- 새로운 IP를 할당받기 위해 DHCP 서버에 요청
- 2. DHCP Server
- Client로부터 IP 할당 요청이 들어오면 설정된 IP 대역 중 사용하지 않는 대역을 Client에게 부여.
- 3. DHCP Protocol
- IP와 TCP/IP 프로토콜 기본 설정을 개별 클라이언트에게 자동으로 할당하는 역할
DHCP State Diagram
<출처: http://www.ktword.co.kr/word/abbr_view.php?m_temp1=2590>
INIT
: Client는 DHCP 서버를 찾기 위해 Broadcast 메시지를 보냄.Selecting
: DHCP 서버는 Client에게 응답하고, Client는 응답한 DHCP 서버를 선택Requesting
: Client는 서버에게 요청을 보냄.Bound
: 서버는 요청에 대한 응답(ACK
)을 보냄.Renewing
: Client가 서버로부터 받은 IP의 임대시간이 어느정도 지나, 재연장(갱신)을 받고자할 때 발생.- 이 경우 Selecting의 과정을 거치지 않고 바로
Bound
과정을 거침
- 이 경우 Selecting의 과정을 거치지 않고 바로
동작 방식
- 1. DHCP Discover
- Client가 Broadcast 메시지를 보내 DHCP 서버를 검색.
- 2. DHCP Offer
- DHCP 서버가 자신의 IP와 할당 가능 IP를 Client에게 제공.
- 3. DHCP Request
- DHCP 서버를 찾은 Client가 Server에게 IP 할당을 요청
- 4. DHCP ACK
- Server는 Client에게 IP 할당.
<출처: https://jwprogramming.tistory.com/35>
장단점
- 편리하게 IP 관리 가능
- 중복된 IP 할당을 피할 수 있음
- DHCP 서버를 찾기 위한 Broadcast 패킷으로 인해 네트워크 상에 부하가 있을 수 있음.