[Network] 전송계층

박세건·2024년 5월 16일
0

CS 학습

목록 보기
22/23

전송계층

전송계층이 없어도 물리, 데이터링크, 네트워크 이 3가지의 계층만 있으면 목적지에 데이터를 보낼 수 있습니다.
하지만, 라우팅 과정에서 오류가 발생할 수 있고 패킷이 손상되거나 유실되는 경우를 확인할 수 없습니다. 즉, 신뢰성있는 데이터를 보낼 수 없을 수 있습니다.
때문에 데이터가 잘 도착했는지를 확인하기위해 전송계층이 필요합니다.

전송 계층에는 오류를 점검하느 기능이 있어서 오류가 발생하면 데이터를 재전송 하도록 합니다.

전송 계층에서는 데이터가 제대로 도착했는지 확인합니다.


만약 네트워크 계층을 통해서 원하는 곳에 데이터를 전달했다면 이 정보가 어느 애플리케이션으로 보내줘야하는지는 알 수 없게됩니다.
때문에, 컴퓨터가 데이터를 전달받고 어떤 애플리케이션으로 전달해야 하는지를 도와줍니다.

전송 계층에서는 데이터의 목적지가 어떤 애플리케이션인지 식별합니다.


TCP

TCP란, 전송계층에서 사용하는 프로토콜로 신뢰할 수 있는 정확한 통신을 제공하는 연결형 통신 프로토콜

  • TCP 헤더 : TCP로 전송할 때 목적지 까지 데이터를 전송하기 위해 필요한 정보가 들어있습니다.
  • 세그먼트 : 이 TCP 헤더가 붙은 데이터를 의미합니다.

TCP는 이전에 설명했던 것처럼 연결형 통신 프로토콜 이기때문에 데이터를 전송하기 전에 연결 이라는 과정을 통해서 연결을 확립합니다.

연결 에 대한 정보는 TCP 헤더의 코드 비트 라는 부분에 기록됩니다.

3-Way-handshake

이전에 설명했던 연결이라는 과정을 수행하기 위해서 SYN(연결 요청), ACK(확인 응답) 을 사용해서 총 3번의 패킷 교환을 통해 연결을 확인합니다.

  1. 요청하고자 하는 장치에게 연결 요청을 위한 SYN을 보냅니다.
  2. 요청을 받은 장치는 요청을 허가한다는 ACK응답을 보냄과 동시에 요청을 보낸 장치에게 다시 요청하고자 하는 SYN을 보냅니다(ACK+SYN)
  3. 요청을 원했던 장치는 ACK로 허가한다는 응답을 보냅니다.

연결을 하기위해 서로 3-way-handshake 과정을 통해서 진행했다면, 연결을 종료하기 위해서는 4-way-handshake 과정을 통해 연결을 종료합니다.

  1. 연결을 종료하겠다는 요청을 보냅니다(FIN)
  2. 요청을 받은 장치는 확인했다는 응답을 보냅니다.(ACK)
  3. ACK 응답을 다 보낸 후에 다시 FIN 응답으로 연결 종료를 요청합니다.
  4. 응답을 받은 처음의 장치는 연결 종료를 확인했다는 ACK 응답을 보냅니다.

연결을 확립하는 3-way-handshake와 과정이 다른이유는 연결을 종료하겠다는 응답을 받고 바로 응답함과 동시에 연결을 종료해버린다면 미처 전송하지 못한 데이터가 남아있을 수 있고 데이터가 유실될 위험성이 크기 때문에 확인했다는 ACK 응답을 보낸후에 유실되는 데이터를 방지하기 위해서
정해진 시간동안을 기다린 후에 다시 FIN으로 요청을 종료하는 요청을 보내는 것입니다.

일련번호, 응답번호

TCP 헤더에 저장되어있는 정보

  • 일련번호 : 수신 측 에 현재 데이터가 몇 번째 데이터인지 알려줌
  • 응답번호 : 송신 측에게 수신측이 현재 몇 번째 데이터를 확인했는지 알려줌

이전에 TCP는 데이터 전송에 오류를 확인하고 재전송해주는 기능이 있다고 했는데 일련번호와 응답 번호를 확인해서 오류를 확인하고 재전송하고 이것을 재전송 제어 라고합니다.

윈도우 크기

상대방에게 쌓인 세그먼트(TCP헤더 + 데이터)를 일시적으로 모아서 보관하는 장소

  • TCP는 세그먼트를 하나씩 보낼때마다 응답을 확인하는 통신인데 데이터를 보낼 때마다 이런 응답을 계속확인하는 과정은 효율이 좋지 않다
  • 세그먼트를 연속적으로 보낸 후에 한번에 응답을 확인한다면 효율이 높아질 것이다.
  • 때문에 이 연속적으로 보낸 세그먼트를 보관하는 곳이 버퍼가 된다.
  • 버퍼에 연속적으로 세그먼트를 보내도 수신측에서 대응할 수 있고 효율도 좋다.
  • 하지만 그 버퍼의 크기를 넘기는 데이터를 보내게 되면 오버플로우가 발생한다.

이러한 오버플로우 현상을 방지하기 위해서 버퍼의 크기를 알 수 있는 정보를 TCP 헤더에 추가했고 이를 윈도우 크기 라고 한다.
얼마나 많은 용량의 세그먼트를 저장할 수 있는지 확인할 수 있다. 즉, 매번 응답하지 않고 연속적으로 송수신할 수 있는 데이터의 크기를 의미

포트 번호

네트워크 계층에서 데이터를 보내려고 하는 장치까지 라우터를 통해 보낼 수 있다고 했고 TCP를 통해 데이터를 전달해야 하는 애플리케이션을 알려준다고 했다.
이 애플리케이션이 무엇인지를 알려주는 것이 포트 번호이다.

동작하는 애플리케이션은 각각의 포트번호를 갖게되고 서로 다른 애플리케이션을 포트 번호로 구분될 수 있습니다.
때문에 포트번호를 통해 원하는 애플리케이션에게 데이터를 전달할 수 있게됩니다.

포트 번호 종류

  • 잘 알려진 포트 : 0 ~ 1023 : 이미 예약 되어있음 : 중요한 프로토콜
  • 등록된 포트 : 1024 ~ 49151 : 랜덤 포트라 하고 클라이언트 측의 송신 포트로 사용
  • 동적 포트 : 49151 ~ 65535

URL 문법과 포트번호를 함께 사용해서 표기하기도 합니다.

  • ex) ftp:000.000.000.000:21

UDP

TCP가 신뢰성있고 연결을 중요하시 하는 프로토콜이였다면, 반대로 UDP는 비연결형 통신을 하고 데이터를 효율적이고 빠르고 보내는 것이 중점인 프로토콜입니다.

  • 비연결형 통신이기때문에 연결하기 위해 확인작업을 하지 않는다.
  • 데이터를 빠르게 보내는 것이 목적이기 때문에 스트리밍 방식이나 동영상 서비스 같은 곳에서 사용

UDP 헤더 구조

UDP 헤더 : TCP와 비슷하게 데이터를 올바르게 전송하기 위한 정보들이 저장되어있다
데이터 그램 : UDP 헤더가 붙은 데이터를 데이터 그램이라고 한다.

상대방의 응답을 확인하지 않고 데이터를 보낸다 : UDP 통신

UDP 통신을 이용한 브로드캐스트

UDP 프로토콜 기반 통신 방법으로, **LAN 내부의 호스트들 모두에게 동시에 패킷을 전송할 수 있는 방식입니다.

profile
멋있는 사람 - 일단 하자

0개의 댓글

관련 채용 정보