솜이의 데브로그

6장 ) 전송 계층 본문

CS/Network

6장 ) 전송 계층

somsoming 2021. 10. 16. 21:52

Reference : 모두의 네트워크

 

6. 전송 계층 : 신뢰할 수 있는 데이터 전송하기

 

전송계층은 목적지에 신뢰할 수 있는 데이터를 전송하기 위해 필요하다.

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

또한 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별한다.

 

 

연결형 통신과 비연결형 통신

신뢰성/정확성과 효율성

  • 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신. 여러번 확인하고 보낸다
    → 연결형 통신 프로토콜에는 TCP 사용
  • 비연결형 통신 : 효율적으로 데이터를 전달하는 통신. 확인 절차 없이 일방적으로 전송한다.
    → 비연결형 통신 프로토콜에는 UDP 사용

 

 

TCP의 구조

 

TCP 헤더

  • TCP로 전송할 때 붙이는 헤더를 TCP 헤더라고 하며, 이 TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
  • 데이터를 전송하려면 '연결' 이라는 가상의 독점 통신로를 확보해야한다.
  • 위의 그림 중 TCP Flags 부분에 코드비트 6비트에 연결의 제어 정보가 기록된다.
    • 초깃값은 0, 비트 활성화 시 1
    • 연결을 확립하려면 SYN와 ACK가 필요하다.

 

3-way handshake

  1. 통신 허가를 받기 위해 연결 확립 허가를 받기 위한 요청(SYN)를 보낸다
  2. 서버는 클라이언트가 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답 ACK를 보낸다. 동시에 서버도 클라이언트에게 데이터 전송 허가를 받기 위해 SYN를 보낸다.
  3. 서버의 요청을 받은 클라이언트는 허가한다는 응답으로 연결 확인 응답 ACK를 다시 보낸다.
  4. 연결을 끊을 때는 FIN과 ACK를 사용하여 연결 끊기위한 요청을 교환한다.

 

위의 과정에서 각각의 플래그 비트가 1로 변경된다.

 

 

일련번호와 확인 응답 번호의 구조

  • 3-way handshake가 끝나고 나서 실제 데이터를 보내고 받을때는 TCP 헤더의 일련번호와 확인 응답 번호를 사용한다.
  • 일련번호는 송신측에서 수신측에 이 데이터가 몇 번째 데이터인지 알려준다. (분할된 데이터의 번호)
  • 확인 응답 번호는 수신측이 몇 번째 데이터를 수신했는지 송신측에 알려준다.
  • 세그먼트 하나를 보낼 때 마다 확인 응답을 기다리는 대신 세그먼트를 연속해서 보내고 난 뒤 확인 응답을 반환하면 효율이 높아진다.
  • 세그먼트는 일시적으로 '버퍼'에 저장한다.
    • 대량으로 데이터가 전송되어 보관하지 못하는 것을 오버플로우라고 한다.
  • 버퍼의 한계 크기를 tcp 헤더의 윈도우 크기라고 한다.
    • 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다.
    • 윈도우 크기의 초깃값은 3-way handshake 시에 판단한다.

 

포트 번호의 구조

  • 어느 애플리케이션의 데이터인지 구분하도록 TCP 헤더에 출발지 포트번호목적지 포트번호를 저장한다.
  • well-known ports : 0~1023번 포트. 일반적으로 사용하는 서버측 애플리케이션에서 사용
  • random port : 1025번 이상. 클라이언트 측의 송신 포트로 사용
  • 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다.

 

 

UDP의 구조

  • 비연결형 통신이므로 데이터 전송시 시간이 걸리는 확인 작업을 일일이 하지 않는다.
  • 데이터를 효율적으로 빠르게 보내는 것이 장점이다.
    • 따라서 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳에 사용.
  • UDP헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.
  • 상대방을 확인하지 않고 연속해서 데이터를 전송한다.
  • 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있으며, 이것을 브로드캐스트 라고 한다.