0. TCP
데이터를 세그먼트 단위로 쪼개서 순서를 부여하여 전송한다.
세그먼트 순서가 뒤바뀌는 일이 없도록 오류를 제어하는 것이 중요하다.
1. 포트 번호
- 전송 계층은 어떤 애플리케이션을 통과하는지 정의하는 곳이고 그 기능을 하는 것이 포트 번호이다.
- 쉽게 설명해서 컴퓨터의 주소가 IP이면 프로그램의 주소는 포트 번호이다.
- 0~1023번: 잘 알려진 포트(well-known port)로 특정한 쓰임을 위해서 사용되는 포트이다.
- 1024~49151번: 기관이나 기업들이 사용하는 포트로 사전 등록된 포트(registered port)이다.
- 49152~65535번: 일반 사용자들이 자유롭게 사용할 수 있는 포트로 다이내믹 포트(dynamic port)라고 한다.
주요 well-known port
포트 번호 | 프로토콜 | 서비스/설명 |
20 | TCP | FTP 데이터 전송 (File Transfer Protocol Data) |
22 | TCP | SSH (Secure Shell, 보안 원격 접속) |
23 | TCP | Telnet (원격 텍스트 접속, 암호화 없음) |
25 | TCP | SMTP (Simple Mail Transfer Protocol, 이메일 전송) |
53 | TCP/UDP | DNS (Domain Name System, 도메인 네임 해석) |
80 | TCP | HTTP (웹, HyperText Transfer Protocol) |
123 | UDP | NTP (Network Time Protocol, 시간 동기화) |
443 | TCP | HTTPS (HTTP Secure, 암호화된 웹) |
2. 일련번호와 확인 응답 번호
- 일련번호: 송신자가 수신자에게 보내려는 데이터가 몇 번째인지 알려주는 것
- 확인 응답 번호: 수신자가 몇 번째 데이터를 받았는지 송신자에게 알려주는 역할
- 일련번호와 확인 응답 번호를 통해 수신한 데이터가 순서는 맞는지, 오류는 없는지 검사할 수 있다.
- 1500 바이트의 데이터를 500바이트 패킷(한 번에 보낼 수 있는 데이터의 최대 크기)으로 전송하는 예시
- 송신자는 500바이트의 데이터를 수신자에게 보낸다. 이때 3방향 핸드셰이크 연결 과정에서 일련번호에는 1을 부여받는다(임의로 생성되는 숫자)
- 수신자는 500바이트의 데이터를 받았기 때문에 확인 응답 번호는 501이 된다.
- 이제 송신자는 501부터 데이터를 보내야하기 때문에 일련번호는 501이 된다.
- 수신자는 또다시 500바이트의 데이터를 받았기 때문에 확인 응답 번호는 1001이 된다.
- 송신자가 또다시 500바이트의 데이터를 보내기 위해 일련번호는 1001이 된다.
- 마지막으로 수신자는 500바이트 데이터를 받았다는 확인 응답 번호로 1501을 사용한다.
3. 윈도우 크기
- 송신자가 한 번에 보낼 수 있는 데이터의 최대 크기
- 수신자가 얼마나 데이터를 받아들일 수 있는지 확인 한 후 그 크기를 고려해서 데이터를 전송한다.
- 3방향 핸드셰이크 과정에서 SYN과 ACK 외에도 윈도우 정보를 주고 받는다.
4. 코드 비트
- 모두 기본값은 0이고 비트가 활성화되면 1이 된다.
비트명 | 설명 |
URG | Urgent Pointer 필드가 유효함을 나타냄 (긴급 데이터) |
ACK | Acknowledgment Number 필드가 유효함을 나타냄 (응답 확인) |
PSH | Push Function, 데이터를 즉시 상위 계층에 전달 요청 |
RST | 연결 재설정(Reset) 요청 |
SYN | 연결 시작(Synchronize sequence numbers) |
FIN | 연결 종료(Finish) 요청 |
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 전송계층의 로드 밸런서 (0) | 2025.05.09 |
---|---|
[네트워크] UDP 구조 (0) | 2025.05.08 |
[네트워크] 3방향 핸드셰이크 (0) | 2025.05.05 |
[네트워크] 전송계층의 역할 (0) | 2025.05.02 |
[네트워크] 라우터의 동작 방식 (0) | 2025.04.29 |