오늘은 OSI 계층 중 4 계층인 전송 계층에 대해 포스팅하려고합니다.
3 계층까지 거치면서 데이터를 다른 네트워크로 전달할 수 있게 됐습니다.
하지만, 데이터를 전송하더라도 목적지에 안전하게(데이터 손실 등이 없이) 도착하지 못 할 가능성이 존재합니다.
그래서, 전송 계층인 4계층은 목적지로 데이터를 안전하게 전송할 수 있는 역할을 합니다.
목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요한 계층.
전송 계층의 통신 방식은 연결형과 비연결형으로 나눌 수 있습니다.
세그먼트
라고 합니다.커넥션(connection)
이라는 가상의 독점 통신로
를 확보한 후 연결을 확인하고 데이터를 전송합니다.코드 비트
라는 정보가 붙는데, 여기서 6비트로 연결 제어 정보가 기록됩니다.SYN
과 ACK
입니다.SYN
과 ACK
을 사용하여 확립합니다. 세 번에 걸쳐 확인
을 하기 때문에 3 hand shake
라고 불립니다.통신을 하려면 목적지에 허가를 받아야하므로 출발지에서 목적지로 연결을 하기 위한 요청(SYN)
를 보냅니다.
목적지에 요청을 받은 후 허가한다는 응답을 보내기 위해 연결 확립 응답(ACK)
를 보내고, 동시에 목적지에서도 출발지에게 데이터 전송을 허가 받기 위한 SYN을 같이 보냅니다.
출발지에서도 목적지에 요청을 허가한다는 의미로 ACK를 보냅니다.
FIN
과 ACK
을 사용합니다.연결이 확립된 후 실제 데이터를 보내거나 받을 때는 TCP 헤더의 일련번호(sequence number)
와 확인 응답 번호(acknowledgement number)
를 사용합니다.
일련 번호인 2001과 확인 응답 번호인 3001은 연결이 확립될(3-hand-shake) 때, 결정됩니다.
출발지는 목적지로 200 바이트를 전송합니다.
목적지는 이를 수신하고 다음에 수신하고자 하는 데이터 번호를 확인 응답 번호
에 넣습니다. (2001 + 200바이트) 그리고, 일련 번호에 출발지에서 보낸 확인 응답 번호를 넣습니다.
데이터 전송이 완료될 때까지 반복합니다.
일련번호와 확인 응답 번호를 사용해 데이터가 손상되거나 유실된 경우 데이터를 재전송하도록 하는데, 이를 제전송 제어
라고 합니다.
버퍼
라는 일시적인 보관소를 사용해서, 세그먼트를 연속으로 보내고 한 번에 확인 응답을 받는 방법을 사용합니다.TCP 헤더의 윈도우 크기
입니다.위에서 언급했지만, 전송 계층에서 목적지가 어떤 앱인지 구분하는 역할이 있습니다.
이러한 구분을 TCP 헤더의 포트 번호로 구분합니다.
0~65535
번 까지 사용할 수 있습니다.0~1023(well-known ports)
은 주요 프로토콜이 사용하도록 예약되어 있습니다.1025 이상
은 랜덤 포트로 클라이너트 측의 송신 포트로 사용됩니다.UDP는 비연결 통신이기 때문에, 데이터를 전송할 때, 상대방을 확인하지 않습니다.
즉, 효율성을 중요시 하는 통신입니다.
예를 들어, 동영상과 같은 데이터의 경우 TCP로 통신할 경우 상대방을 확인하는데 시간이 오래걸리지만,
UDP로 통신을 한다면 빠르게 데이터를 주고 받을 수 있습니다.
전송 계층에서 UDP 통신을 하면 UDP 헤더
가 붙습니다.
데이터에 UDP 헤더가 붙은 것을 UDP 데이터그램
이라고 합니다.
같은 랜에 있는 컴퓨터나 네트워크 장비에 일괄적으로 데이터를 보낼 수 있습니다.<브로드캐스트
>
Reference