[네트워크] TCP 구조

2025. 5. 7. 14:25·CS/네트워크

 


 

 

 

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바이트 패킷(한 번에 보낼 수 있는 데이터의 최대 크기)으로 전송하는 예시
    1. 송신자는 500바이트의 데이터를 수신자에게 보낸다. 이때 3방향 핸드셰이크 연결 과정에서 일련번호에는 1을 부여받는다(임의로 생성되는 숫자)
    2. 수신자는 500바이트의 데이터를 받았기 때문에 확인 응답 번호는 501이 된다.
    3. 이제 송신자는 501부터 데이터를 보내야하기 때문에 일련번호는 501이 된다.
    4. 수신자는 또다시 500바이트의 데이터를 받았기 때문에 확인 응답 번호는 1001이 된다.
    5. 송신자가 또다시 500바이트의 데이터를 보내기 위해 일련번호는 1001이 된다.
    6. 마지막으로 수신자는 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
'CS/네트워크' 카테고리의 다른 글
  • [네트워크] 전송계층의 로드 밸런서
  • [네트워크] UDP 구조
  • [네트워크] 3방향 핸드셰이크
  • [네트워크] 전송계층의 역할
초오오이
초오오이
  • 초오오이
    초이
    초오오이
  • 전체
    오늘
    어제
    • 분류 전체보기 (101)
      • PHP (4)
      • Laravel (7)
      • Vue.js (5)
      • CS (73)
        • WEB (1)
        • 컴퓨터 구조 (12)
        • 운영체제 (24)
        • 네트워크 (24)
        • 자료구조 & 알고리즘 (12)
      • etc (6)
        • 자격증 (3)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
초오오이
[네트워크] TCP 구조
상단으로

티스토리툴바