Summary

[모두의 네트워크] 06장. 전송 계층 : 신뢰할 수 있는 데이터 전송하기

프로그래민 2021. 12. 6. 01:01
반응형

전송계층의 역할

전송 계층

OSI 7계층 중 4계층으로써 물리, 데이터 링크, 네트워크를 거쳐 넘어온 데이터를 목적지에 신뢰할 수 있도록 전달하는 기능을 담당. 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 하며 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 해줌. 데이터가 중복되거나 누락되지 않고 오류 없이 순서에 맞게 전송되도록 관리. 즉, 정리하자면 크게 오류 점검기능, 목적지의 애플리케이션 식별 기능 제공.

 

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

전송계층의 특징은 데이터를 목적지에 문제없이 전달하는 신뢰성/정확성과 데이터를 빠르게 전달하는 효율성으로 구분 가능. 연결형 통신은 데이터를 교환하기 전에 연결을 맺고 데이터를 교환하는 동안 계속 연결을 관리하는 프로톨의 형태로써 신뢰할 수 있고 정확한 데이터를 전송. 비연결형 통신은 연결에 대한 초기화 과정이 없는 통신으로써 효율적으로 데이터를 전송. 대표적으로 연결형 통신 프로토콜은 TCP, 비연결형 통신 프로토콜은 UDP가 있음.

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

 

TCP의 구조

TCP (Transmission Control Protocol, 전송 제어 프로토콜)

연결형 통신 방식 프로토콜로써 신뢰할 수 있는 데이터 전송을 보장. 데이터 링크 계층에서 이더넷 헤더를 붙여 프레임을 만들고 네트워크 계층에서 IP 헤더를 붙여 IP 패킷을 만든 것처럼 전송계층에서도 TCP 전송할때 TCP 헤더를 붙여서 세그먼트를 만듬. 즉, TCP 헤더 + 데이터를 세그먼트라고 함.

TCP 헤더

 

3-way handshake

TCP는 연결형 통신 프로토콜이기에 TCP 헤더의 6개의 코드비트가 존재. 이때 SYN(연결 요청), ACK(확인 응답) 비트를 이용하여 연결을 확립. 신뢰성을 제공하기 위헤 TCP에서 컴퓨터간에 연결을 맺는 초기화 과정인 이 과정을 3-way handshake라고 함.

3-way handshake

  1. 연결 확립 요청 : 통신을 하려면 수신자의 허가가 필요하기에 송신자에서 수신자로 연결확립 허가를 받기 위한 요청(SYN)을 보냄.
  2. 연결 확립 응답 + 연결 확립 요청 : 수신자는 송신자가 보낸 요청을 받은 후 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보냄. 동시에 수신자도 송신자에게 데이터 전송허가를 받기 위해 연결 확립 요청(SYN)을 보냄.
  3. 연결 확립 응답 : 수신자의 요청을 받은 송신자는 수신자로 허가한다는 응답으로 연결확립 응답(ACK)을 보냄.

 

4-way handshake

데이터를 전송한 후에는 연결을 끊기 위한 요청을 교환해야함. 연결을 끊을 때는 FIN(연결 종료)ACK(확인 응답)을 사용. TCP 연결해제하는 이 과정을 4-way handshake라고 함.

4-way handshake

  1. 연결 종료 요청 : 송신자에서 수신자로 연결 종료 요청(FIN)을 보냄.
  2. 연결 종료 응답 : 수신자에서 송신자로 연결 종료 응답(ACK)을 반환.
  3. 연결 종료 요청 : 수신자에서 송신자로 연결 종료 요청(FIN)을 보냄.
  4. 연결 종료 응답 : 송신자에서 수신자로 연결 종료 응답(ACK)을 반환.

 

일련번호와 확인 응답 번호

TCP 통신에서 3-way handshake 이후 실제 데이터를 주고 받음에 있어서 TCP 헤더의 일련번호(Sequence Number)와 확인 응답 번호(Acknknowledgment Number)를 사용. 일련번호는 수신자에게 송신자의 몇번째 데이터인지를 알려주는 역할을 함. 데이터에 일련번호를 부여하여 수신자가 몇번째 데이터를 받았는지 알게함. 학인 응답 번호는 송신자에게 수신자에서 몇번째 데이터를 수신했는지 알려주는 역할을 함. 

일련번화와 확인 응답 번호

데이터는 항상 올바르게 전달되는 것이 아니기에 일련번호와 확인 응답 번호를 통하여 데이터가 손상되거나 유출되었는지 확인하고 문제가 있을경우 재전송을 하는데 이것을 제전송 제어라고함.

 

윈도우 크기

TCP는 세그먼트 단위로 통신을 함. 다만 매 세그먼트마다 매번 연결, 연결해제를 한다면 비효율적이기에 연속된 세그먼트를 보냄. 이러한 연속된 세그먼트를 보관하는 장소를 버퍼라고 함. 수신 측에서 버퍼의 크기를 정해야하는데 이것을 TCP 헤더의 윈도우 크기 값으로 설정. 즉, 윈도우 크기는 얼마나 많은 용량의 데이터를 저장해 둘 수 있는 지를 결정해줌.

 

포트 번호

전송 계층은 오류 점검 기능과 애플리케이션 식별 기능을 제공하는데 포트 번호는 애플리케이션을 식별할때 사용. 데이터 통신을 할때 통신하고자 하는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위로써 포트 번호는 보통 0~65535를 사용(0~1023은 well-known 포트로 예약됨). TCP 헤더에 있는 출발지 포트 번호(Source Port Number)와 목적지 포트 번호(Destination Port Number)를 사용. 데이터를 전송할때는 상대방의 IP 주소가 필요하지만, 전송 후 어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트번호가 필요. 

 

UDP의 구조

UDP (User Datagram Protocol, 사용자 데이터그램 프로토콜)

비연결형 통신 프로토콜로써 데이터를 전송함에 있어서 TCP와 효율성을 중시하여 3-way handshake와 같은 연결 확인작업이 없음. 데이터를 효율적으로 빠르게 보내는 것이 장점. TCP가 TCP 헤더를 붙여서 세그먼트를 만든 것 처럼 UDP는 UDP 헤더를 붙여 UDP 데이터그램을 만듬. UDP 헤더는 TCP 헤더에 비해 간단하게 구성. UDP를 이용하면 목적지에 관계없이 랜에서 일괄적으로 데이터를 보내는 브로드캐스트 기능 사용 가능.

UDP 헤더

 

TCP vs UDP

  TCP UDP
통신 방식 연결형 통신 비연결형 통신
장점 신뢰성 효율성, 속도
전송 순서 O X
수신 여부 확인 O X
통신 방식 1:1 1:1 / 1:N / N:N

 

 

출처
http://www.ktword.co.kr/test/view/view.php?nav=2&no=323&sh=udp
http://www.ktword.co.kr/test/view/view.php?m_temp1=1889
https://velog.io/@majaeh43/%EB%AA%A8%EB%91%90%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-0w8k7ou8
모두의 네트워크 - 길벗 출판, 미즈구치 카츠야 저
 

모두의 네트워크 - 교보문고

10일 만에 배우는 네트워크 기초 | 즐거운 프로그래밍 경험 | 누구나 10일이면네트워크를 이해할 수 있다!준비 | 네트워크 기초 지식 익히기네트워크, 패킷, 비트, 바이트, 랜, 서버 등 네트워크 용

www.kyobobook.co.kr

반응형