공부/TCP IP

[ TCP/IP ] 트랜스포트층

haena02 2023. 2. 13. 11:32
반응형

트랜스포트층

 

트랜스포트층은 애플리케이션층과 네트워크칭의 중개역할을한다.

데이터가 전달되다가 문제가 발생하게되면 트랜스포트층은 통신 서비스에 맞는방식으로 문제를 처리한다.

 

트랜스포트층에는 신뢰를 중요시하는 TCP와 속도를 중요시하는 UDP가 존재한다.

TCP는 그래서 확실히 상대에게 데이터를 제공하고싶을 때 사용하고, UDP는 실패해도 크게 상관없을 때 사용한다.

 

 

포트 번호

 

포트번호는 0~65535번까지 있다.

그 중에서도 0~1023번까지는 통신 서비스마다 미리 예약되어있고 그 외에는 사용자가 임의로 설정할 수 있다. 

하지만 이때 통신하는 컴퓨터 간에 어떤 포트번호를 사용할지에 대한 인식이 통일되어있어야한다. 

 

TCP 프로토콜

 

TCP는 데이터를 확실히 전달하기 위해 수신측과 일 대 일로 통신한다.

이런 통신방식을 커넥션형 통신이라고 한다.

대강 다음과 같은 3단계로 이루어져있다.

  1. 수신측이 데이터를 받을 수 있는 상태인지 확인하고 통신을 연결한다.
  2. 데이터를 정해진 크기로 분할하고, TCP헤더를 붙여서 송신한다. 트랜스포트층에서는 데이터의 단위를 세그먼트라고한다. 
  3. 데이터를 다 보냈다면 통신을 종료한다.

수신측은 다음과같은 3단계로 데이터를 확인한다.

  1. TCP 헤더의 정보를 보고 데이터를 순서대로 맞춘다. 그 외에도 헤더에는 포트번호나 데이터확인 값이 들어있다.
  2. TCP헤더를 데이터를 다시 맞춘다.
  3. 포트번호를 보고 애플리케이션층의 프로토콜에 전달한다.

TCP는 정확한 통신을 위해 통신상태를 전달하는 TCP헤더에 6비트 컨트롤 플래그를 이용한다. 

컨트롤 플레그는 다음과같은 정보로 이루어져있다. 

  • URG : 긴급하게 확인해야하는 데이터인지
  • ACK : 통신확인
  • PSH : 세그먼트를 바로 애플리케이션층에 전달할지
  • RST : 통신 강제 해제
  • SYN : 통신개시
  • FIN : 통신 종료 요청

그리고 통신을 시작하기 전에 양쪽 모두 다룰 수 있는 세그먼트사이즈와 윈도사이즈를 확인한다.

윈도사이즈는 한 번에 받을 수 있는 사이즈를 의미한다.

두 기기 중 수치가 작은쪽에 맞춰 통신한다.

 

또, TCP헤더에는 데이터의 순서를 나타내는 시퀀스 번호가 적혀있다.

송신측은 TCP헤더에 시퀀스 번호를 쓰고 세그먼트를 보낸다.

수신측은 시퀀스 번호를 보고 순서대로 전달되고 있는지 확인하고 다음번호를 송신층에게 알려준다.

그런 송신층은 무사히 전달되었다는것을 확인하고 다음 세그먼트를 보낸다.

수신측은 다시 받고 순서대로 나열한다. 

효율은 떨어지지만 확실하다.

 

세그먼트는 윈도사이즈만큼 모아서 보낼 수 있다.

윈도사이즈는 통신 도중에 네트워크에 상태에 따라 크기가 조정될 수 있다.

 

TCP는 확실히 데이터를 전송해야하기 때문에 확인 응답이 없다면  세그먼트를 재전송한다.

데이터는 네트워크 자체에서 분실될 수도 있고 확인응답 자체가 분실될수도 있다.

데이터가 깨진경우에는 헤더에 있는 체크섬이라는 값을 사용하여 판단한다.

ㅇ일정 횟수 재전송했는데도 확인답변이 오지 않는다면 RSL를 1로 만들어 통신을 강제종료한다.

 

 

 

TCP 헤더 구성요소

  • 송신측 포트 번호 (16비트)
  • 수신측 포트 번호 (16비트)
  • 시퀀스 번호 (32비트) - 전체 데이터에서 이 데이터의 순서
  • 확인 응답 번호 (32비트) - 다음에 받을 데이터의 시퀀스 번호
  • 데이터세그먼트 (1비트) - 맨 앞에서부터 데이터 시작위치까지 비트수를 32로 나눈 값
  • 컨트롤 플래그
  • 윈도우사이즈 (16비트)
  • 체크섬 (16비트) - 데이터가 무사한지 기록
  • 긴급 포인터(16비트) - URG플래그가 1인 경우 사용된다.
  • 옵션 - TCP의 기능을 확장할 때 사용한다
  • 패딩 - 헤더가 32비트의 정수배가 되지 않을 때 헤더의 크기를 조정한다. 

 

UDP 프로토콜

 

UDP는 사전의논을 하지 않고 일방적으로 데이터를 보낸다.

이런 통신을 비커넥션형 통신이라고 한다.

UDP에서는 여러상대에게 동시에 데이터를 보낼 수 있다. 

복수의 특정에게 보내는 것을 멀티캐스트, 불특정 다수에게 보내는 것을 브로드캐스트라고한다. 

 

UDP프로토콜은 데이터가 꺠지지 않았는지 확인하고 애플리케이션에 전달하는 것밖에 없다.

 

UDP프로토콜은 구성도 간단하다.

  • 송신측 포트번호 (16비트)
  • 수신측 포트번호 (16비트)
  • 데이터 양 (16비트)
  • 체크섬 (16비트)
반응형

'공부 > TCP IP' 카테고리의 다른 글

[ TCP/IP ] 데이터링크층과 물리층  (0) 2023.02.23
[ TCP/IP ] 네트워크층  (0) 2023.02.14
[ TCP/IP ] 애플리케이션층  (0) 2023.02.11
[ TCP/IP ] 통신 서비스와 프로토콜  (0) 2023.02.09
[ TCP/IP ] TCP/IP 개요  (0) 2023.02.06