TCP & UDP
- 전송 계층에서 사용하는 프로토콜
-> 프로토콜 모델이 TCP / IP모델이므로 TCP / IP 계층에서 사용됨
-> OSI 계층에서 사용하는 모델은 아님
- 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜 기반으로 구현되어 있음
cf) TCP / IP 4계층 모델
- Layer 3 (전송 계층) : 송신자와 수신자를 연결하는 통신 서비스 -> 데이터 전달은 담당
TCP(Transmission Control Protocol)
: 연결형 프로토콜
- 특징)
- 데이터 경계를 구분하지 않음 -> 바이트 스트림(byte-stream) 서비스
- 연결 지향 프로토콜(수신 여부 확인 O) -> 신뢰도는 높지만 속도가 느림
- 1 : 1 통신
- 가상회선 패킷 교환 방식을 사용 -> 패킷 사이 순서 보장
- HTTP, Email, File transfer
cf) 가상 회선 패킷 교환 방식
- 각 패킷에는 가상회선 식별자가 포함되어 있음
- 모든 패킷을 전송하면 가상 회선이 해제되고 패킷들은 전송된 순서 대로 도착하는 방식
UDP(User Datagram Protocol)
: 비연결형 프로토콜
- 특징)
- 데이터 경계를 구분함 -> 데이터그램(datagram) 서비스
- 비연결 지향 프로토콜(수신 여부 확인 X) -> 신뢰도는 낮지만 속도가 빠름
- 1 : 1 or 1 : N or N : N 통신
- 단순히 데이터만 주는 데이터그램 패킷 교환 방식 사용 -> 순서를 보장하지 않음
- DNS, Broadcasting
cf) 데이터그램 패킷 교환 방식
- 각 패킷이 독립적으로 이동하며 최적의 경로를 선택
- 하나의 메세지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음
- 도착 순서가 다를 수 있는 방식
cf) 데이터 경계 구분 여부
▶ 데이터 경계 구분
: 데이터에 처음과 끝이 있음
- 끝날 때마다 발신과 수신이 이루어짐
▶ 데이터 경계를 구분하지 않음
: 데이터를 원하는 사이클로 받음
- 예를 들어, 길이 3의 데이터가 3번 보내졌어도 4초에 한 번 수신된다면 4초동안 데이터를 받고 그 이후에 들어온 데이터를 4초 동안 또 받음
TCP 연결 및 해제 과정
1. 포트(Port) 상태 정보
- CLOSED : 포트가 닫힌 상태
- LISTEN : 포트가 열린 상태로 연결 요청 대기 중
- SYN_RCV : 요청을 받고 상대방의 응답을 기다리는 중
- ESTABLISHED : 포트 연결 상태
2. 플래그 정보
- TCP Header에는 CONTROL BIT(플래그 비트, 6bit)가 존재
-> 각각의 bit는 "URG - ACK - PSH - RST - SYN - FIN" 의미를 가짐
1) SYN(Synchronize Sequence Number)
- 000010
- 연결 설정
- Sequence Number를 랜덤으로 설정하여 세션을 연결하는 데 사용
- 초기에 Sequence Number를 전송
2) ACK(Acknowledgement)
- 010000
- 응답 확인
- 패킷을 받았다는 것을 의미
3) FIN(Finish)
- 000001
- 연결 해제
- 세션 연결을 종료시킬 때 사용
- 더 이상 전송할 데이터가 없음
3. TCP 연결 성립 과정 : 3-way handshake
1) SYN 단계 : 클라이언트는 서버에 클라이언트 ISN을 담아 SYN을 보냄
- ISN : 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호 -> 장치마다 다를 수 있음
2) SYN + ACK 단계 : 서버는 클라이언트의 SYN을 수신하고 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냄
3) ACK 단계 : 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보냄
4. TCP 연결 해제 과정 : 4-way handshake
1) 클라이언트가 연결을 닫으려고 할 때, FIN으로 설정된 세그먼트를 보냄 -> 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다림
2) 서버 : 클라이언트로 ACK 승인 세그먼트를 보냄 / 클라이언트 : FIN 받기 위해 FIN_WAIT_2 상태
3) 서버 : ACK를 보내고 일정 시간 후 클라이언트에 FIN이라는 세그먼트를 보냄
4) 클라이언트 : TIME_WAIT 상태, 서버로 해지 준비가 되었다는 ACK를 보냄 / 서버 : CLOSED 상태가 됨 -> 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 모든 자원의 연결이 해제됨
cf) TIME_WAIT
: 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태
- 지연 페킷, 두 장치 간 접속 오류 등 의도치 않은 에러로 인해 연결이 데드락으로 빠지는 문제점을 방지하는 데 쓰임
'네트워크' 카테고리의 다른 글
6. 네트워크 기기 (0) | 2025.02.21 |
---|---|
5. DNS + 웹 통신 흐름 (0) | 2025.02.21 |
3. OSI 7계층 (0) | 2025.02.14 |
2. 대역폭 (0) | 2025.02.14 |
1. 네트워크 기초 (0) | 2025.02.14 |