3장 트랜스포트 계층(1)
(본 글은 “컴퓨터 네트워킹 하향식 접근” 도서 및 네트워크 프로그래밍 수업 내용을 정리한 글 입니다.)
3.1 트랜스포트 계층의 서비스 및 개요
-
서로 다른 호스트에서 동작하는 애플리케이션 프로세스간의논리적 통신을 제공
-
종단 시스템에서 동작
-
송신측에서 애플리케이션의 메세지를 세그먼트단위로 쪼개 네트워크 계층으로 보낸다.
각 계층별 용어가 다르다. 전송계층에서는 세그먼트, 네트워크 계층에서는 데이타 그램이라고 표현했고 각각 전달단위가 다르다.
-
수신측에서는 세그먼트 메세지를 받아 조립 후 애플리케이션 계층으로 보낸다.
-
대표적 트랜스포트 계층의 프토토콜 : TCP , UDP
물리계층, 링크계층, 네트워크 계층만 있어도 소스 - 목적지 컴퓨터 까지 데이터 전달은 가능 그러나 손실된 데이터를 복구하거나 관리해주지는 않는다.
데이터의 손실을 확인하고 복구하는 작업은 상당히 복잡한데 이를 애플리케이션에서 다 처리하게 되면 힘드니 전송계층에서 별도로 관리하는 것.
트랜스포트 계층과 네트워프 계층의 관계
네트워크 계층 : 말 그대로 컴퓨터와 컴퓨터( 호스트 간의 통신)
트랜스포트 계층 : 프로세스간의 논리적 통신
TCP와 UDP
-
TCP
-
순서대로 전송하고 신뢰성이 있다
-
혼잡제어, 흐름제어, 연결설정
-
-
UDP
-
손실에 대해 복구하지 않고 순서대로 보냈을 때 순서대로 도착한다는 보장이 없다
-
두 서비스 모두 지연 보장 , 대역폭 보장을 제공하지는 않는다.
“내가 1분에 100M보내는 것을 보장해주세요!” 이런게 없다는 뜻
-
3.2 다중화/역 다중화
다중화 : 출발지 호스트의 소켓으로부터 데이터를 전달받아 모은 데이터를 세그먼트 단위로 묶고 캡슐화 작업을 마친 후 네트워크 계층으로 내려보내는 작업
이상적으로 본다면 다중화 없이 각각 연결하려는 목적지와 1:1 선을 만들면 좋겠지만 비용과 비현실적인 문제로 그렇게 하지 않고 하나로 보내는 N:1관계(MUX)
역다중화 : 반대로 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업
각 IP데이터 그램에는 출발지 IP, 목적지 IP주소가 있으며 IP다이어 그램은 1개의 트랜스포트 계층 세그먼트를 전달한다.
각각의 세그먼트에는 위 그림과 같이 포트정보와 헤더 필드(체크섬 , 데이터 길이)등의 정보가 들어있는 구조.
이 정보들을 통해 세그먼트들의 데이터를 적절한 소켓으로 전달할 수 있다. (TCP, UDP에 따라 식별하는 정보는 다름)
-
UDP의 경우 목적지 IP주소, 목적지 포트번호를 통해 소켓을 식별한다.
-
즉 동일한 목적지 IP번호와 목적지 포트번호를 가지고 있다면 같은 소켓으로 전달된다.
-
TCP의 경우 목적지 IP주소, 목적지 포트번호, 출발지 IP주소, 출발지 포트번호를 통해 소켓을 식별한다.
-
서버는 동시에 여러 TCP소켓을 생성할 수 있고 각 소켓은 4자기 요소를 통해 식별된다.
-
웹 서버는 클라이언트마다 각각 별개의 소켓을 만든다.
persist : 웹 페이지의 글자, 문서와 같은 각 Object들을 하나의 소켓으로 가져오는 방법
non-persist : 웹 페이지의 글자, 문서와 같은 각 Object마다 TCP 연결을 생성하고 종료하며 값을 가져오는 방법
3.3 UDP(비연결형)
-
손실에 대해 재전송을 하지 않음
-
순서대로 보내도 순서대로 도착한다는 보장이 없다.
-
HandShaking이 없다.
TCP의 경우 손실을 찾고 재전송을 하기위해 ack정보를 주고받는다.
-
스트리밍 멀티미디어 어플리케이션에서 주료 사용
영상 같은 경우 수 많은 이미지 정보에 대해 손실을 찾고 재전송하게되면 딜레이가 심하다. 그러나 사람의 눈으로 볼 때 일부 프레임이 전송되지 않더라도 어색하지 않고 빠르게 보낼 수 있어서 UDP를 사용한다.
-
UDP를 사용하는 프로토콜로 DNS , SNMP가 있다.
-
UDP자체가 신뢰성이 없으므로 TCP로 바꾸거나 애플리케이션 자체에서 재전송과 관련된 로직을 구현해 신뢰성을 높일 수 있다.
체크섬
-
16비트 단위로 전송데이터를 자르고 각 자른 체크섬을 계속 더해나간다.
-
전체 더한 마지막 결과값에 대해 1의 보수를 취해 UDP의 체크섬 부분에 넣는다.
- 16비트 CRC에서 에러를 검출하지 못할 확률은 약 0.001% (정확도가 높다)
-
수신쪽에서 받은 데이터를 자체적으로 계산해 송신쪽에서 보낸 체크섬데이터과 일치하는지 비교한다. (다르다면 문제가 있다는 의미)
댓글남기기