전송계층은 송수신자 간의 통신을 맡고 있는 계층이다. 곧 데이터의 전달을 뜻하는데 이를 주로 맡고 있는 프로토콜에 'TCP', 'UDP' 등이 있다.
여기서 보면 OSI 7계층 중 4계층에서 기능하고 있는 것을 알 수 있다.
인터넷상에서 데이터를 '메시지 형태'로 전송을 제어하는 프로토콜(규약)
곧 신뢰성이 필요한 중요한 전송일 때 사용한다는 거다.👍
A. 패킷을 전송하기 위한 논리적 경로를 배정한다.
A. 목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해 세션을 수립하는 과정.
A. 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이 조각을 '패킷'이라 함.
사용자 데이터그램 프로토콜(규약) 데이터를 데이터그램 단위로 처리하는 프로토콜
신뢰 < 연속성
즉 실시간 서비스(속도가 빠르면 좋은)... 에 이용
A. 독립적인 관계를 지니는 패킷
A. 흐름제어 (버퍼 오버플로우 방지)
: 데이터 송수신 구간의 속도를 조절
A. 혼잡제어
: 패킷 수가 넘치지 않게 조절.
실시간 서비스더라도 UDP 보다는 TCP 통신을 주로 이용한다고 함.
=> 왜냐하면 신뢰성을 기반으로 하기 때문.
솔직히 TCP를 배웠다면 당연히 이도 알아야 할 것이다...
- TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정이다.
클라이언트가 서버에게 SYN 패킷을 보냄 (sequence : x)
서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄 (sequence : y, ACK : x + 1)
클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄
- 연결 이후 모든 통신이 끝났다면 네트워크 연결을 해제하는 과정이다.
클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다.
(아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
=> 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
=> TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)