전송_계층
정의
OSI 7 계층의 4번째 계층이며 네트워크의 구성 요소와 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 층이다.
=> 전송 계층에서 송수신 호스트를 정하고 네트워크 계층에서 목적지에 가장 빠르게 도착할 길을 찾는다(라우팅)
서로 다른 호스트에서 동작하는 프로세스들 간의 논리적 통신을 제공한다.
데이터 링크 계층과 비슷한 점이 있으나 데이터 링크 계층은 물리적으로 직접 통신(연결)한다면 이 쪽은 논리적 통신 (연결)을 한다.
2계층에서 MAC 주소, 3계층에서 IP 주소를 쓰듯이 4계층(전송계층)에선 PORT 번호를 통해 구분짓는다.
### 논리적 통신 애플리케이션 관점에서 보면 프로세스들을 동작하는 호스트들이 직접 연결된 것처럼 보인다는 뜻.
통신 과정
- 송신 측의 전송계층은 송신 어플리케이션 프로세스로부터 수신한 메시지를 세그먼트(segment)로 변환시킨다.
- 세그먼트 : 전송 계층에서 패킷을 부르는 용어
- 어플리케이션 메시지를 작은 조각으로 분할한 뒤 각각의 조각에 전송계층 헤더를 추가함.
- 이후 전송 계층은 종단 시스템에 있는 네트워크 계층으로 세그먼트를 전달
- 세그먼트가 네트워크 계층 패킷(데이터그램) 안에 캡슐화되어 목적지에 전달
- 세그먼트가 네트워크 계층 패킷(데이터그램) 안에 캡슐화되어 목적지에 전달
- 수신 측에서 네트워크 계층으로부터 데이터그램을 받아 세그먼트 추출
- 전송 계층은 수신 어플리케이션에서 세그먼트 내부 데이터를 이용 가능하도록 수신된 세그먼트를 처리.
전송 계층의 프로토콜
TCP 프로토콜
프로세스 간의 신뢰적인 연결 지향성 서비스를 제공한다.(웹, 이메일 등)
- 전송 단위 : 세그먼트
- 연결을 확인하는 3 way handshake와 연결 종료를 확인하는 4 way handshake가 있다.
- 흐름 제어 : 수신 속도보다 송신 속도가 빠를 때 수신 측이 소화할 수 있는 속도로 데이터를 제어한다.
- 오류 제어 : 데이터가 손상되었는지(오류), 데이터가 중간에 빠졌는지(분실) 체크하여 재전송 요청하여 복구시킨다.
- 순서 제어 : 쪼개진 세그먼트의 순서를 보장해준다. (데이터그램 오프셋과 비슷한 세그먼트 오프셋이 있음)
- 통신 상대와 연결을 하고 있는 양방향 통신(stateful)
3 way handshake
TCP/IP 프로토콜을 이용하여 통신을 하는 응용프로그램(어플리케이션)이 데이터를 전송하기 전에 먼저 정확한 상대와 연결이 되었는지 확인하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
웹 소캣으로 따지면 클라이언트가 시작할 때 서버 쪽으로 connect 호출을 보내는 것과 비슷한 느낌.
- Client->server : TCP SYN
- server->client : TCP SYN ACK
- client->server : TCP ACK
4 way handshake
세션 연결을 종료할 때 수행하는 절차.
- Client->server : TCP FIN
- server->client : TCP ACK ACK
- server->client : TCP FIN ACK
- client->server : TCP ACK
용어 정리 | 기능 |
---|---|
SYN | 동시 발생, 서로 다른 컴퓨터가 연결이 이루어지도록 하는 요청 |
ACK | 승인, 다른컴퓨터나 네트워크가 네트워크 장비에 전송되었다는 뜻. SYN와 FIN의 호출 때마다 사용된다. |
FIN | 연결을 끊도록 하는 요청 |
UDP 프로토콜
TCP와 달리 별도의 handshake가 필요 없는 비 연결형 방식. 신뢰성은 비교적 낮으나 속도가 빠른 장점이 있다.
별도의 세그먼트를 만들지 않고 데이터그램을 보낸다.
전송 단위 : 데이터그램
비연결형(stateless)
체크섬 : UDP에서 오류 검출을 하는 방식으로 최소한의 신뢰성을 유지함.
다중화, 역다중화
다중화 : 출발지 호스트에서 소켓으로부터 데이터를 모으고 이에 대한 세그먼트를 생성하기 위해서 각 데이터 헤더 정보를 캡슐화(세그먼트로 만든다) 하고 그 세그먼트들을 네트워크 계층으로 전달하는 작업
역다중화 : 전달 받은 세그먼트 데이터를 올바른 소켓으로 전달하는 과정