전송계층이 없어도 물리, 데이터링크, 네트워크 이 3가지의 계층만 있으면 목적지에 데이터를 보낼 수 있습니다.
하지만, 라우팅 과정에서 오류가 발생할 수 있고 패킷이 손상되거나 유실되는 경우를 확인할 수 없습니다. 즉, 신뢰성있는 데이터를 보낼 수 없을 수 있습니다.
때문에 데이터가 잘 도착했는지를 확인하기위해 전송계층이 필요합니다.
전송 계층에는 오류를 점검하느 기능이 있어서 오류가 발생하면 데이터를 재전송 하도록 합니다.
전송 계층에서는 데이터가 제대로 도착했는지 확인합니다.
만약 네트워크 계층을 통해서 원하는 곳에 데이터를 전달했다면 이 정보가 어느 애플리케이션으로 보내줘야하는지는 알 수 없게됩니다.
때문에, 컴퓨터가 데이터를 전달받고 어떤 애플리케이션으로 전달해야 하는지를 도와줍니다.
전송 계층에서는 데이터의 목적지가 어떤 애플리케이션인지 식별합니다.
TCP란, 전송계층에서 사용하는 프로토콜로 신뢰할 수 있는 정확한 통신을 제공하는 연결형 통신 프로토콜
- TCP 헤더 : TCP로 전송할 때 목적지 까지 데이터를 전송하기 위해 필요한 정보가 들어있습니다.
- 세그먼트 : 이 TCP 헤더가 붙은 데이터를 의미합니다.
TCP는 이전에 설명했던 것처럼 연결형 통신 프로토콜 이기때문에 데이터를 전송하기 전에 연결 이라는 과정을 통해서 연결을 확립합니다.
이 연결 에 대한 정보는 TCP 헤더의 코드 비트 라는 부분에 기록됩니다.
이전에 설명했던 연결이라는 과정을 수행하기 위해서 SYN(연결 요청), ACK(확인 응답) 을 사용해서 총 3번의 패킷 교환을 통해 연결을 확인합니다.
연결을 확립하는 3-way-handshake와 과정이 다른이유는 연결을 종료하겠다는 응답을 받고 바로 응답함과 동시에 연결을 종료해버린다면 미처 전송하지 못한 데이터가 남아있을 수 있고 데이터가 유실될 위험성이 크기 때문에 확인했다는 ACK 응답을 보낸후에 유실되는 데이터를 방지하기 위해서
정해진 시간동안을 기다린 후에 다시 FIN으로 요청을 종료하는 요청을 보내는 것입니다.
TCP 헤더에 저장되어있는 정보
- 일련번호 : 수신 측 에 현재 데이터가 몇 번째 데이터인지 알려줌
- 응답번호 : 송신 측에게 수신측이 현재 몇 번째 데이터를 확인했는지 알려줌
이전에 TCP는 데이터 전송에 오류를 확인하고 재전송해주는 기능이 있다고 했는데 일련번호와 응답 번호를 확인해서 오류를 확인하고 재전송하고 이것을 재전송 제어 라고합니다.
상대방에게 쌓인 세그먼트(TCP헤더 + 데이터)를 일시적으로 모아서 보관하는 장소
이러한 오버플로우 현상을 방지하기 위해서 버퍼의 크기를 알 수 있는 정보를 TCP 헤더에 추가했고 이를 윈도우 크기 라고 한다.
얼마나 많은 용량의 세그먼트를 저장할 수 있는지 확인할 수 있다. 즉, 매번 응답하지 않고 연속적으로 송수신할 수 있는 데이터의 크기를 의미
네트워크 계층에서 데이터를 보내려고 하는 장치까지 라우터를 통해 보낼 수 있다고 했고 TCP를 통해 데이터를 전달해야 하는 애플리케이션을 알려준다고 했다.
이 애플리케이션이 무엇인지를 알려주는 것이 포트 번호이다.
동작하는 애플리케이션은 각각의 포트번호를 갖게되고 서로 다른 애플리케이션을 포트 번호로 구분될 수 있습니다.
때문에 포트번호를 통해 원하는 애플리케이션에게 데이터를 전달할 수 있게됩니다.
TCP가 신뢰성있고 연결을 중요하시 하는 프로토콜이였다면, 반대로 UDP는 비연결형 통신을 하고 데이터를 효율적이고 빠르고 보내는 것이 중점인 프로토콜입니다.
UDP 헤더 : TCP와 비슷하게 데이터를 올바르게 전송하기 위한 정보들이 저장되어있다
데이터 그램 : UDP 헤더가 붙은 데이터를 데이터 그램이라고 한다.
상대방의 응답을 확인하지 않고 데이터를 보낸다 : UDP 통신
UDP 프로토콜 기반 통신 방법으로, **LAN 내부의 호스트들 모두에게 동시에 패킷을 전송할 수 있는 방식입니다.