TCP 특징
양종단 호스트 내 프로세스 간 신뢰성 있는 연결 지향성 서비스 제공
- 신뢰성이 있음
- 연결지향성
1) 연결 설정 : 3-way-handshaking
2) 연결 해제 : 4-way-handshaking
- 전이중 전송방식/양방향성
- 멀티캐스트 불가능 > 유니캐스트가 가능.
- 상위 응용계층과는 바이트 스트림으로 주고받음 > 세그먼트화하여 전송
- 흐름 제어 (Flow Control)
: 송신과 수신 속도를 일치시킴.
: 순서번호(sequence number), 확인응답번호(acknowledgment number), 수신윈도우(windows) 3개의 변수로 흐름제어
- 혼잡 제어 (Congestion Control)
: 네트워크가 혼잡하다고 판단될 때 송신율 감속
: TCP 혼잡제어를 위해 수신 윈도우/혼잡 윈도우 2개의 변수 관리
* 수신윈도우 : 수신 버퍼의 여유 용량, 혼잡윈도우 : 혼잡 미유발 한계 용량
[OSI 7 모델] 4계층 - TCP 헤더
1) Source Port / Destination Port : 16비트의 포트번호 사용
※ Well Known Port : 0~1023
TCP/UDP | 서비스 | Port 주소 | 기능 설명 |
TCP | HTTP | 80 | Web |
TCP | HTTPS | 443 | HTTP over SSL (암호화 전송) |
UDP | TFTP | 69 | TFTP |
TCP | FTP | 20, 21 | File transfer - data (20), cotnrol(21) |
TCP | SSH | 22 | Secure Shell |
TCP | Telnet | 23 | Remote login |
TCP/UDP | DNS | 53 | Domain Name System |
TCP | SMTP | 25 | 이메일 전송 |
TCP | POP3 | 110 | 이메일 가져오기 |
TCP | IMAP | 143 | 이메일 가져오기 |
UDP | SNMP | 161,162 | Network managemet |
UDP | syslog | 514 | Event logging |
TCP | Kerberos | 88 | 인증 관련 |
TCP | NetBIOS | 137-139 | DOS/Windows naming |
UDP | NTP | 123 | Network time of day |
2) Sequence Number : TCP 신뢰성 및 흐름제어 기능 제공. 데이터의 순서를 의미
3) Acknowledgement Number : 수신하기 기다리는 다음 바이트 번호 = (마지막 수신 성공 순서번호 + 1)
4) Data Offset : 데이터가 시작되는 위치가 어디부터인지 표시
5) Reserved : 미래를 위해 예약된 필드로 모두 0으로 채워져 있다. (0 0 0)
6) TCP Flags : U A P R S F
URG | Urgent | Urgent Pointer 필드에 값이 채워져 있음을 알림. 1로 설정되어 있으면, 순서와 상관 없이 먼저 송신됨. |
ACK | Ack | 확인응답 메시지 1 : 확인번호 유효 0 : 확인번호 미포함 |
PSH | Push | 데이터를 포함한다는 것을 띃남. |
RST | Reset | 강제 연결 초기화 |
SYN | Syn | 연결시작. |
FIN | Fin | 연결해제. |
7) Window size (윈도우 크기) : 흐름제어를 위해 사용 > 슬라이딩 윈도우 방식
- 송신자에게 자신의 수신 버퍼 여유 용량의 크기를 지속적으로 통보
- 슬라이딩 윈도우 : 일정한 윈도우 크기 이내에서 한번에 여러개 패킷을 송신하고, 한번의 ACK로 수신확인, 윈도우 크기를 변경하면서 흐름제어.
8) Checksum : 데이터 송신 중 발생하는 오류 검출
9) Urgent Pointer
- TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호