전송 계층의 역할
-
물리 계층, 데이터 계층, 네트워크 계층의 3계층이 있으면 목적지에 있는 데이터를 보낼 수 있다. 하지만 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해주지 않는다.
-
전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.

-
전송 계층:
- 오류를 점검하는 기능이 있다. (오류가 발생하면 데이터를 재전송하도록 요청)
- 해당 데이터가 어떤 애플리케이션에서 사용하는 데이터인지 판단
연결형 통신과 비연결형 통신
전송 계층의 특징
-
신뢰성/정확성
- 데이터를 목적지에 문제없이 전달
- 연결형 통신: 상대편과 확인해 가면서 통신하는 방식
- TCP: Transmission Control Protocol(전송 제어 프로토콜)
-
효율성
- 데이터를 빠르고 효율적으로 전달
- 비연결형 통신: 상대편과 확인하지 않고 일방적으로 데이터를 전송하는 방식
- 비디오 시청시 사용
- UDP: User Datagram Protocol(사용자 데이터그램 프로토콜)

TCP의 구조
3-way 핸드셰이크란?
- 연결(connection)은 SYN과 ACK를 사용하여 확립하는데 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환한다. (3번 확인)

- 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드셰이크(three-way handshake)라고 한다.
- 연결을 끊을 때는 FIN(연결 종료)과 ACK(확인 응답)를 사용한다.

일련번호와 확인 응답 번호의 구조
일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하는데 이를 재전송 제어라고 한다.
윈도우 크기
-
세그먼트(데이터)를 한 번 보낼 때 마다 응답을 반환하는 방식은 효율이 좋지 못하다.
-
세그먼트(데이터)를 연속해서 보내고 난 다음에 확인 응답을 반환하면 호율이 높아진다.
- 버퍼(Buffer)를 사용해 세그먼트를 여러 개 받을 수 있다.
- 버퍼가 넘치는 것을 오버플로우(overflow)라고 한다.
- 오버플로우가 되지 않기 위해서는 버퍼의 한계 크기를 알 고 있어야 한다. 그것이 TCP 헤더의 윈도우 크기 값에 해당한다.
- 윈도우 크기: 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다.

-
윈도우 크기에 초깃값은 3-way 핸드셰이크를 할 때 판단한다.

포트 번호의 구조
- 포트번호: 애플리케이션을 구분 할 때 사용
- TCP 헤더: 출발지 포트 번호(source port number), 목적지 포트 번호(destination port number)
- 포트번호: 0 ~ 65535번을 사용할 수 있다.
- 0 ~ 1023번: 주요 프로토콜이 사용되도록 예약되어 있다.
- 1024: 예약되어 있지만 사용되지 않는 포트
- 1025번 이상: 랜덤 포트

- 서버에서 사용되는 번호(예약 번호):

UDP의 구조
- 비연결 통신
- 데이터를 효율적으로 빠르게 전송
- 상대방을 확인하지 않고 데이터를 전송
- 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다. (브로드캐스트)
UDP 헤더란?
- UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.
