TCP (Transmission Control Protocol)
- 연결 지향 서비스
- 송신측과 수신측이 연결을 동의하면 tcp는 연결 확립 -> 신뢰적인 양방향(full-duplex) 데이터 전송 서비스
- 대표적으로 HTTP : Web 서비스 (+ FTP, Telnet, SMTP 등등)
TCP 세그먼트 형식
- TCP 데이터 단위 : Segment
- 이 세그먼트는 IP로 보내지고, IP데이터그램에 포함되어 전송
TCP의 하위계층은 IP , 데이터링크계층에선 헤더 붙여서 최종적인 데이터프레임 만듦
- TCP 세그먼트 = TCP헤더 + TCP데이터
- IP데이터그램 = IP헤더 + TCP세그먼트
- 데이터프레임 = 헤더 + IP데이터그램
- 송신 포트/수신포트 : 각 프로세스를 구분하기 위한 고유주소로 송수신 포트번호
- 수신번호 : 송신측 TCP가 지정하는 순서 번호, 각 바이트마다 순서 번호 존재
- 확인번호 : 수신측 TCP가 다음에 수신을 기대하는 데이터의 순서 번호 표시, ACK플래그 비트가 지정된 경우에만 유효 (1로 지정된 경우에만)
- 헤더번호 : 데이터 어디에서 시작하는지 확인 가능
- 플래그 필드 : ACK - 확인번호, URG - 긴급포인터 필드가 유효한지, FIN - 연결 종료, PSH - 상위계층에 데이터 전달 지시, RST - 연결리셋으로 버퍼 비우거나 유효하지 않은 세그먼트에 대한 응답, SYN - 최초 연결설정
- 윈도우 크기 : 슬라이딩 윈도우 크기에 해당, 수신측 TCP가 수신할 수 있는 바이트 수 표시, 흐름제어 가능
- 첵섬 : TCP 세그먼트의 오류 검출
- 긴급포인터 : 급하게 상위계층에 전달
- 옵션/패딩 : 옵션 - 최대 크기 세그먼트 지정 , 패딩 - 헤더의 마지막이 32비트 단위로 끝날 수 있도록 함 (생략가능)
- 데이터 : 상위계층 데이터
TCP 기능
- 연결설정 3단계 핸드쉐이킹
1) 송신 -> 수신 연결 요청 세그먼트 : SYN, 순서번호 = X
2) 수신 -> 송신 ACK 확인 세그먼트 : SYN, 순서번호 = Y, ACK, 확인번호 = X+1 (그 다음의 번호)
3) 송신 -> 수신 연결 설정 확인 세그먼트 : ACK, 확인번호 = Y+1
* SYN = 1, ACK = 1이어야 전송 가능
순서번호, 확인번호
- 순서번호(seq) : 세그먼트 데이터의 첫번째 바이트 번호
- 확인번호(ack) : 상대방에게서 받게될 다음 바이트의 순서번호, 누적 ack (다음에 기대되는 번호)
데이터 전송
- 양쪽에서 동시에 데이터 전송할 수 있는 양방향 데이터 전송 지원
오류 탐지 및 재전송
- 하위 계층에서 일어날 수 있는 IP데이터그램의 손실, 중복, 파괴 그리고 순서의 흐트러짐을 탐지, 회복 기능 제공
- 순서번호와 확인번호, 재전송타이머, 첵섬 사용
- 재전송 타이머 사용 : 각 세그먼트 송신될 때 송신측 TCP가 작동, 수신받기 전에 종료되면 송신측은 해당 세그먼트 재전송
흐름제어
- TCP헤더의 윈도우 크기 필드 사용
- 수신측 TCP는 자신의 처리 능력에 맞는 값으로 윈도우 크기 지정, 송신측 TCP의 전송속도 제어
혼잡제어
- 인터넷 과부하, 트래픽에 문제 있을 때 혼잡 제어
- 과부하 줄이는 메커니즘 제공
연결 해제
- 연결해제하는 측에서 FIN플래그 지정하여 요청
- 연결해제 3단계 핸드쉐이킹
1) FIN, 순서번호 = X
2) ACK, 확인번호 = X+1, FIN, 순서번호 = Y
3) ACK, 확인번호 = Y+1
TCP FSM(Finite State Machine: 유한상태 기계)
UDP (User Datagram Protocol)
- UDP 비연결 서비스 : 데이터보내기 전에 연결설정X, 핸드쉐이킹 절차 없음
- DNS의 하위계층으로 이용됨
- 신뢰성있는 서비스 제공 못함 : 오류제어나 흐름제어 불가능
- 신뢰성 제어필요 없기에 신속하게 전달 가능
- 데이터 전송단위 : UDP 사용자 데이터그램
UDP 첵섬필드
- IP프로토콜에서는 헤더만 첵섬을 계산하지만 UDP에서는 데이터 까지 첵섬 계산
- 송신측 UDP데이터그램 16비트 정수로 분리, 1의 보수 수행 : 첵섬 필드
- 수신측에서 UDP사용자 데이터그램에 오류가 없다면 수신측 합은 모두 1
- 하나라도 0이 있다면 오류 존재
'CS > Network' 카테고리의 다른 글
7-2. 응용계층 : HTTP, FTP, SMTP, DNS (0) | 2023.01.11 |
---|---|
7-1. 응용계층 : HTTP1 (0) | 2023.01.06 |
6-1. 트랜스포트 계층 : 안정적인 데이터 전송원리 (0) | 2023.01.04 |
5-6. 네트워크 계층과 라우팅 : 스위치와 허브, FTP와 SMTP (0) | 2023.01.04 |
5-5. 네트워크 계층과 라우팅 : 인터네트워킹 (0) | 2022.12.28 |