목차
1. 전송 계층의 역할
2. TCP의 구조
3. 일련번호와 확인 응답 번호의 구조
4. 포트번호의 구조
5. UDP의 구조
1. 전송 계층의 역할
1) 전송 계층
- 전송 계층의 목적 : 목적지에 신뢰할 수 있는 데이터를 전달하기 위해서이다.
데이터가 손상되거나 유실되어도 물리 계층, 데이터 링크 계층, 네트워크 계층에서는 아무런 조치를 해주지 않는다.
- 전송 계층의 기능
- 오류를 점검하는 기능
오류가 발생하면 데이터를 재전송하도록 요청한다.
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능
2) 전송 계층의 특징
- 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것
연결형 통신 (connection-oriented)
- 효율성 : 데이터를 빠르고 효율적으로 전달하는 것
비연결형 통신 (connectionless)
- 연결형 통신 : 상대편과 요청과 응답을 반복해 가면서 통신하는 방식
연결형 통신 프로토콜 : TCP
ex) 대부분의 통신
- 비연결형 통신 : 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식
비연결형 통신 프로토콜 : UDP
ex) 동영상
- 대역폭 : 정해진 시간 동안 전송될 수 있는 데이터의 양(속도)
대역폭은 제한적이다.
2. TCP의 구조
1) TCP
- TCP 헤더 : TCP로 전송할 때 붙이는 헤더
- 세그먼트(segment) : TCP 헤더가 붙은 데이터
TCP 헤더 의 내용과 순서
- 출발지 포트 번호(16비트)
- 목적지 포트 번호(16비트)
- 일련번호(32비트)
- 확인 응답 번호(32비트)
- 헤더 길이(4비트)
- 예약 영역(6비트)
- 코드 비트(6비트)
- 윈도우 크기(16비트)
- 체크섬(16비트)
- 긴급 포인터(16비트)
- 옵션
- Connection(연결) : 데이터를 전송하기 위해서 먼저 확보해야 하는 가상의 독점 통신로
- 코드 비트의 6개 비트에는 Connection 제어 정보가 기록된다.
- URG, ACK, PSH, RST, SYN, FIN
- SYN(연결요청)과 ACK(확인응답)가 있으면 Connection을 확립할 수 있다.
2) 3-way 핸드셰이크
- three-way handshake : 신뢰할 수 있는 Connection을 하기 위해 데이터를 전송하기 전에 패킷 요청을 세번 교환한다.
컴퓨터1~컴퓨터2
1. Connection 확립 요청 : SYN
컴퓨터2~컴퓨터1
2. Connection 확립 응답 + Connection 확립 요청 : ACK + SYN
컴퓨터1~컴퓨터2
3. Connection 확립 응답 : ACK
- 위의 과정을 거치고 난 후에 SYN과 ACK 비트가 1로 활성화 된다.
- 연결을 끊을 때도 확인 작업을 한다.
- 연결을 끊을 때는 FIN(연결 종료)과 ACK를 사용한다.
컴퓨터1~컴퓨터2
1. Connection 종료 요청 : FIN
컴퓨터2~컴퓨터1
2. Connection 종료 응답 + Connection 종료 요청 : ACK + FIN
컴퓨터1~컴퓨터2
3. Connection 종료 응답 : ACK
- 위의 과정을 거치고 난 후에 FIN과 ACK비트가 1로 활성화 된다.
3. 일련번호와 확인 응답 번호의 구조
1) 일련번호와 확인 응답 번호
- 3-way 핸드셰이크가 끝나고 실제 데이터를 보낼 때는 일련번호와 확인응답번호를 사용한다.
- TCP는 데이터를 분할해서 전송한다.
- 일련번호 : 송신 측에서 수신측에 분할된 데이터 중 몇 번째 데이터인지 알려준다.
- 확인 응답 번호 : 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할 + 다음 번호의 데이터를 요청하는 곳에도 사용된다.(확인 응답)
- 재전송 제어 : 일련번호와 확인 응답 번호를 사용하여 데이터가 손상되거나 유실된 경우에 데이터를 재전송한다.
2) 윈도우 크기
-
위의 방식은 세그먼트당 요청/응답을 한 번 반환하는 통신이다.
-
그러나 이는 효율이 좋지 않다.
-
따라서 세그먼트를 연속해서 보내고 난 후 확인 응답을 반환하는 방식을 사용한다.
-
버퍼 : 세그먼트를 일시적으로 보관하는 장소
-
오버플로우 : 수신측에 대량으로 보관된 세그먼트들에 의해 버퍼가 버티지 못하는 현상.
윈도우 크기 : 버퍼의 한계 크기 = 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기
이를 넘어서면 오버플로우가 발생한다.
-
윈도우 크기의 초깃값은 3-way 핸드셰이크 도중에 판단한다.
4. 포트번호의 구조
1) 포트 번호
- 포트 번호 : 전송된 데이터의 목적지가 어떤 앱인지 구분하는 역할을 위해 사용된다.
- 포트번호의 범위 : 0~65535
- 0~1023번 포트 : 잘 알려진 포트(well-known ports)
주요 프로토콜이 사용하도록 예약되어 있다.
애플리케이션 : 포트 번호
SSH : 22
SMTP : 25
DNS : 53
HTTP : 80
POP3 : 110
HTTPS : 443
- 1024번 포트 : 예약되어 있지만 사용되지 않는 포트
- 1025번~ 포트 : 랜덤 포트
클라이언트 측의 송신 포트
- 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다.
- 따라서 서버 측 포트 번호만 정해두면 된다.
5. UDP의 구조
1) UDP
-
UDP의 장점 : 데이터를 효율적으로 빠르게 보내는 것
-
UDP 데이터그램 : UDP 헤더가 붙은 데이터
UDP 헤더 의 내용과 순서
- 출발지 포트 번호(16비트)
- 목적지 포트 번호(16비트)
- 길이(16비트)
- 체크섬(16비트)
-
브로드캐스트 : UDP를 사용해서 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내는 것.
TCP 방식에서는 헤더에 목적지를 지정하기 때문에 적합하지 않은 방식이다.