Transport-Layer Service
transport-layer protocol 은 다른 host 들에서 실행되는 application processes 사이에 logical communication 을 제공한다. host 들은 실제로 많은 routers 와 data links 로 연결되어있지만, logical communication 에 의해 host 들이 직접적으로 연결된 것 처럼 보인다.
transport-layer protocol 은 network routers 가 아닌 end systems 에서 구현된다. sending side 에서는 transport layer 가 application message 를 segment 라는 단위로 쪼개서 end system 의 network layer 로 보낸다. network layer 에서 segment 는 network-layer packet 인 datagram 으로 encapsulation 되어 destination 으로 보내진다. receiving side 에서는 network layer 가 datagram 에서 transport-layer segment 를 추출하여 transport layer 로 보낸다. transport layer는 받은 segement 를 처리해 receiving appplication 이 사용가능한 data 를 만든다.
network application 은 하나 이상의 transport-layer protocol 이 사용 가능하다. 예를 들어, Internet 은 TCP 와 UDP, 두 가지 protocol 을 사용한다.
Transport layer 는 processes 사이에서 logical communication 을 제공하지만 Network layer 는 hosts 사이에서 logical communication 을 제공한다.
Internet 은 application layer 이 UDP 와 TCP, 두 가지 transport-layer protocol 이 사용 가능하게 한다. TCP 와 UDP 모두 error checking 과 process-to-process data delivery service 를 제공한다. 이 두 가지 service 가 UDP 가 제공하는 service 의 전부이므로 UDP 는 unreliable 하다. 반면, TCP 는 reliable data transfer, congestion control, flow control, connection setup 등 추가적인 service 를 제공한다. TCP 와 UDP 모두 delay guarantess 와 bandwidth guarantees 는 제공하지 않는다.
Multiplexing and Demultiplexing
multiplexing 과 demultiplexing 은 network-layer 에서 제공된 host-to-host delivery service 를 host 에서 작동한는 application 을 위한 process-to-process delivery service 로 확장한 것이다.
process 는 하나 이상의 socket 을 가질 수 있다. receiving host 에 하나 이상의 socket 이 있으므로 각각의 socket 은 unique identifuier 를 가진다. 이때, identifier 의 format 은 UDP 또는 TCP socket 에 따라 결정된다.
각각의 segment 는 어느 socket 으로 갈지 알려주는 special fileds 혹은 header information 을 가진다. 전달받은 segments 를 header information 을 사용해 올바른 socket 으로 보내는 것을 demultiplexing 이라고 한다. 반대로, 여러 sockets 로부터 data 를 모아 demultiplexing 때 쓰이는 header information 을 붙여 encapsulating 하여 segments 를 만든 후 network layer 로 보내는 것을 multiplexing 이라고 한다.

위에서 설명한 어느 socket 으로 갈 지 알려주는 segment 의 special fileds 는 source port number filed 와 destination port number field 이다. 각각의 port 는 16 bit 로 0 ~65535 의 값을 가질 수 있다. 참고로 0 ~ 1023 까지의 port number 를 well-known port numbers 라고 하는데 잘 알려진 application protocols 들이 사용하고 있어 사용이 제한된다. host 는 IP addresses 와 port numbers 를 사용하여 segement 가 적절한 socket 으로 가도록 지시한다.
Connectionless Multiplexing and Demultiplexing

UDP socket 은 destination IP address 와 destination port number 의 two-tuple 로 식별된다. 즉, UDP segements 는 source IP addresses 와 source port numbers 가 달라도 destination IP address 와 destination port nuber 가 같다면 같은 destination socket 을 통해 같은 process 로 전달된다.
segments 가 통과할 socket 을 결정할 때 source port number 를 사용하지 않아 필요없어 보이지만, source process 에 응답하여 segments 를 보낼 때 사용될 수 있다.
Connection-Oriented Multiplexing and Demultiplexing

TCP socket 은 source IP address, source port number, destination IP address, destination port number 의 four-tuple 로 식별된다. 즉, TCP segments 는 이 source IP address, source port number, destination IP address, destination port number 가 모두 같아야 같은 destination socket 을 통해 같은 process 로 전달된다.
client 와 server 가 persistent HTTP 를 사용한다면, 지속시간 동안 client 와 server 는 같은 socket 을 통해 HTTP messages 를 교환한다. client 와 server 가 non-persistent HTTP 를 사용한다면, 모든 request/response 마다 새로운 TCP connection 을 생성하고 닫아 매번 새로운 socket 을 사용하게 된다.
web servers 는 connecting client 마다 다른 socket 을 가진다.
참조
Computer Networking _ A Top Down Approach, 7th, converted
'COMPUTER SCIENCE > Network' 카테고리의 다른 글
[Network] Transport Layer - Principle of Reliable Data Transfer (0) | 2023.01.06 |
---|---|
[Network] Transport Layer - Connectionless Transport: UDP (0) | 2022.12.08 |
[Network] Application Layer - Socket Programming (0) | 2022.11.28 |
[Network] Application Layer - DNS (0) | 2022.11.23 |
[Network] Application Layer - Electronic Mail (0) | 2022.11.21 |
댓글