줄글로 읽고싶다면 더보기를 클릭.
Transport layer는 네트워크에서 데이터 패킷을 '세그먼트'라고 부르며, 이는 어플리케이션 레이어로부터 받은 메시지를 세그먼트로 분할하여 네트워크 레이어로 전달합니다. 이 과정은 주로 메시지의 크기 때문에 필요합니다.
트랜스포트 레이어에서 주로 사용되는 두 가지 프로토콜은 TCP와 UDP입니다. TCP는 혼잡 제어, 흐름 제어, 그리고 연결 설정을 담당합니다. 또한, TCP는 신뢰성을 확보하기 위해 라우터에서 발생하는 큐잉 딜레이로 인한 패킷 손실을 감지하고 재전송을 담당하며, 세그먼트가 순서대로 도착하도록 관리합니다.
반면에 UDP는 이러한 TCP의 기능을 제공하지 않습니다. 또한, TCP와 UDP 모두 지연 시간과 대역폭을 보장하지 않습니다. 이는 패킷 스위칭 방식을 채택하기 때문으로, 이들을 보장하기 위해서는 회로 교환 방식을 사용해야 합니다.
네트워크 레이어와 트랜스포트 레이어의 주요 차이는 네트워크 레이어가 호스트 간의 통신을 처리하고, 트랜스포트 레이어가 프로세스 간의 통신을 처리한다는 것입니다. 편지를 우체통에 넣으면, 목적지의 우편함으로 전달되는 것이 네트워크 레이어의 역할이고, 우편함에서 편지를 꺼내 수신인에게 분배하는 것이 트랜스포트 레이어의 역할입니다. 이때, '집주소'는 IP 주소에, '수신인'은 포트 번호에 해당합니다.
웹 브라우저에서 URL에는 포트 번호를 입력해야 하지만, 웹 서버는 잘 알려진 포트 번호인 80을 사용하므로 보통은 생략합니다.
송신측에서의 다중화(multiplexing)는 어플리케이션 레이어로부터 받은 여러 메시지들에 각각 헤더를 붙여 하나의 소켓을 통해 전송하는 과정을 의미합니다. 반면, 수신측에서의 다중화(demultiplexing)는 하나의 소켓으로부터 받은 세그먼트들을 여러 어플리케이션에 분배하는 과정입니다.
어떤 어플리케이션으로 전달되어야 하는지 알기 위해, UDP와 TCP 모두 헤더에 포트 번호가 필요합니다. UDP는 소스가 다르더라도 목적지가 같으면 동일한 소켓을 사용하므로, 일대다 통신이 가능합니다. 반면에, TCP는 소스와 목적지에 따라 각각의 소켓을 사용하므로 일대일 통신이며, 각 클라이언트에 대해 개별 소켓이 필요합니다.
UDP는 최소한의 기능만 제공합니다. 이는 'best effort service'를 제공한다는 의미로, 패킷 손실이나 순서 변경이 발생할 수 있습니다. 또한, UDP는 핸드셰이킹 과정이 없습니다.
그러나 이러한 단순성이 UDP의 강점이기도 합니다. UDP의 헤더 필드는 소스 포트 번호, 목적지 포트 번호, 길이, 체크섬, 페이로드로 구성되어 있습니다. 핸드셰이킹 과정이 없기 때문에 초기 연결이 빠르며, 헤더 크기가 작고 혼잡 제어 기능이 없어 원하는 만큼 데이터를 보낼 수 있습니다.
UDP의 체크섬은 에러 감지를 위한 필드로, 데이터를 16비트 단위로 나누어 합한 후에 1의 보수를 취한 값을 체크섬 필드에 넣습니다. 수신 측에서는 동일한 방식으로 체크섬을 계산하여 보내는 측의 체크섬 값과 비교합니다. 이를 통해 데이터 전송 중에 오류가 발생했는지 확인할 수 있습니다.
Transport layer
트랜스포트 레이어의 패킷을 세그먼트라고 부른다.
트랜스포트 레이어는 어플리케이션 레이어로부터 받은 메시지를 세그먼트들로 나누어 네트워크레이어로 전달한다.(어플리케이션 메세지가 크기 때문)
트랜스포트 레이어는 2가지 프로토콜이 존재한다: TCP, UDP
TCP가 제공하는 기능들:
Congestion control 혼잡제어
Flow control
Connection setup
TCP는..
reliable: 라우터에서 큐잉 딜레이가 길어지면 패킷드랍이 일어날 수 있는데, TCP는 이런 경우, 다시 전송하여 세그먼트가 잘 도착하도록 해준다.
ordered delivery: 세그먼트가 순서대로 도착하도록 한다.
UDP는 TCP가 제공하는 기능들을 지원하지 않는다.
UDP,TCP 공통적으로:
delay, bandwidth는 보장되지 않는다. 이는 패킷스위칭 방식을 채택하기 때문이다.(서킷 스위칭을 사용해야 이들이 보장됨)
네트워크 레이어 vs 트랜스포트 레이어
네트워크 레이어는 host에서 host 사이의 커뮤니케이션이다.
트랜스포트 레이어는 프로세스간 커뮤니케이션이다.
편지(어플리케이션 메세지)를 우체통에 넣으면, 타겟 집 우편함에 전달된다. 이것이 네트워크 레이어.
그럼, 우편함에서 편지를 꺼내 수신인을 보고 사람에게 분배해준다. 이것이 트랜스포트레이어.
이때, 집주소가 IP번호, 수신인은 port#라고 보면 된다.어
웹브라우저에서 url에도 포트번호를 써야하는데, 웹서버는 well-known 포트번호로 80번을 사용하기떄문에 생략해도 된다.
Multiplexing and Demultiplexing
multiplexing at sender: 어플리케이션 레이어로부터 받은 여러 메세지들을 각각 헤더를 붙여 하나의 소켓을 통해 보냄
demultiplexing at reveiver: 하나의 소켓으로부터 받은 세그먼트들을 여러 어플리케이션에 분배함.
어떤 어플리케이션으로 전달되어야 하는지 알기 위해 UDP,TCP 모두 헤더에 port#이 필요함.
UDP는 src가 다르더라도 목적지가 같으면 동일한 소켓을 사용한다. 따라서 일대다 통신이 된다.
반면 TCP는 src, dest에 따라 다른 각각의 소켓을 사용하므로 일대일 통신이며 클라이언트마다 각각의 소켓이 필요하다.
UDP
별다른 추가 기능이 없음.
Best effort service: 난 최선을 다했는데 어쩔수 없네 ㅋ
lost발생가능
out of order
handshaking 없음
하지만 간단하다.
필드정보도 몇 개 없음.
src port#, dest port#, length, checksum, payload로 구성.
핸드쉐이킹을 안하기때문에 초반연결이 빠를 수 있다.
간단하다.
헤더사이즈가 작다.
혼잡제어가 없어 원하는 만큼 보낼 수 있다(이게 장점이라기엔...? 실시간성이 중요하면 괜찮을지도)
ㅇchecksum:
에러 발생 여부를 감지하는 필드.
데이터를 16비트단위로 쪼개어 더함.
더한 후 1의보수를 취함(0은1로, 1은0으로)
이 결과를 checksum 필드에 넣음.
받는쪽에서도 똑같이 계산한다음 checksum값이 같은지 비교함
(또는 16비트씩 쪼개서 더한값+체크섬= 11111...이 나오는지 확인)
'2023-1 > 컴퓨터네트워크및실습' 카테고리의 다른 글
Reliable Data Transfer(RDT) (0) | 2023.06.11 |
---|---|
UDP Server & Client (0) | 2023.06.11 |
htons / inet_addr (0) | 2023.03.31 |
DHCP (0) | 2023.03.23 |
Socket Basic (실습) (0) | 2023.03.17 |
댓글