컴퓨터 사이언스

TCP/IP, UDP

woohap 2024. 10. 14. 00:00

IP(Internet Protocol)

인터넷 프로토콜 역할
- 지정한 IP 주소에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달 
출발지 IP - 나의 IP
목적지 IP - 상대 IP
1. 출발지, 목적지, 메시지 등을 패킷에 넣고 전송
2. IP 프로토콜에 의해서 노드들을 거쳐 전송되게 됨
3. 최종적으로 목적지 IP에 컴퓨터에 패킷이 도달하게 됨 
4. 목적지 IP에 해당하는 컴퓨터도 동일한 방식으로 출발지 IP 컴퓨터에 응답 

IP 프로토콜의 한계

1. 비연결성
	- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
	즉, 대상 서버가 패킷을 받을 수 있는 상태인지 모름 
	
2. 비신뢰성
	- 중간에 패킷이 사라지는 경우
	- 패킷이 순서대로 안 오는 경우
	
3. 프로그램 구분
	- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우
중간에 패킷이 소실되더라도 모른다.
전송되는 데이터가 크면 끊어서 보내게 되는데 
이 때 전송되는 순서와 도착하는 순서가 달라질 수 있다.
	- 각 패킷마다 다른 경로로 전달될 수 있기 때문 

TCP

인터넷 프로토콜 스택의 4계층

캡슐화 진행 
1. 응용 계층의 메시지를 전송 계층으로 전달 
	- 전달하는 데이터를 '메시지'라고 부른다.
	
2. 전송 계층은 응용 계층의 메시지를 받아 헤더를 붙인 후 인터넷 계층으로 전달
	- 전송 계층에서 처리해야하는 데이터를 헤더에 붙여 '세그먼트(TCP)' 혹은 '데이터그램(TCP)'을 생성
	- PORT 추가 
3. 인터넷 계층은 전송 계층의 데이터를 받아 헤더를 붙인 후 네트워크 인터페이스층으로 전달 
	- 인터넷 계층에서 처리해야하는 데이터를 헤더에 붙여 '패킷' 생성
	- IP 추가

4. 네트워크 인터페이스층은 인터넷 계층의 패킷을 받아 헤더를 붙인다.
	- 패킷에 헤더를 붙여 '프레임' 생성 
	- '프레임'을 'Bit'로 변환하여 전송 
	
**
데이터를 전송 받은 서버는 역캡슐화하여 데이터를 사용 

TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)
( 전송 제어 정보, 순서 정보, 검증 정보가 들어있기 때문에 가능 )

1. 연결지향 - TCP 3 way handshake (가상 연결)
2. 데이터 전달 보증 
3. 순서 보장

신뢰할 수 있는 프로토콜 
- 순서 및 데이터를 보증하기 때문
	
현재는 대부분 TCP 사용 

TCP 3 way handshake

1. SYN 메시지 서버로 전송
2. 서버는 SYN 메시지를 보고 요청 수락시 ACK 메시지를 클라이언트에 전송한다.(동시에 클라에 SYN 전송)
3. 클라이언트는 ACK를 서버에 전송 ( ACK와 함께 데이터 전송 가능 )
4. 앞의 과정 없이 데이터를 주고 받는다.

** 개념적으로 연결됐지만 물리적으로 연결된 것이 아님, 논리적으로 연결 

데이터 전달 보증

1. 데이터 전송
2. 서버는 데이터를 잘 받았는지 클라이언트에 응답함

순서 보장

1. 클라이언트가 순서대로 데이터 전송
2. 패킷의 순서가 잘못된 경우 해당 순서부터 다시 전송하도록 함 

**
서버에서 내부적으로 최적화할 수 있음

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

기능이 없음 
비연결지향
데이터 전달 보증 X
순서 보장 X
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름 

IP와 거의 비슷. 
- PORT와 체크섬 정도만 추가 
애플리케이션에서 추가 작업 필요.
TCP의 경우 이미 사용 중인 프로토콜이므로 커스텀이 어려움
UDP의 경우 커스텀해서 사용 가능 (최적화 등등)
- 애플리케이션에서 추가 작업하면 됨 

'컴퓨터 사이언스' 카테고리의 다른 글

HTTP 메서드  (0) 2024.10.16
HTTP 기본 개념  (2) 2024.10.15
프록시 서버  (0) 2024.10.13
BSD 소켓  (0) 2024.10.12
배열, 연결리스트, 스택,  (0) 2024.10.07