Transport service and protocol
- 전송하기위한 서비스
- 어떻게 application layer를 서포트 할 수 있는가
- Source와 destination사이 연결(edge 시스템들의 연결)
- application process들 간의 논리적 통신을 제공 - 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보인다는 것을 의미
- Send side : 메시지를 segment 단위로 나누어 전달 - network layer로 전송됨
- Receive side : 받은 segment를 다시 재구성하여 application으로 넘겨줌
network layer : 목적지까지 얼마나 잘 전달하는지만 다름 - host간의 logical한 커뮤니케이션(transport는 application간의 커뮤니케이션)
TCP
- reliable(안정적), in-order(알맞은,적합한) delivery(전송)
- 혼잡 제어 : 딜레이, 손실이 많아지면 그에 대한 1차적 해결책 제시
- flow control(추후 다룰 내용)
- 연결 설정 - Source와 destination간의 연결을 해놓고 유지
- segment로 쪼개서 보낸 메시지들은 순서대로 전송을 했다고 하더라도 network계층에서 서로 다른 경로로 이동하게 되고 이는 곧 receiver가 뒤죽박죽인 순서의 segment들을 받는다는 뜻 이다. -> Transport에서 책임을 지면 TCP, 다른 곳(application)에서 책임을 지면 UDP
- 비신뢰적
- 비연결형
- 세그먼트를 데이터그램으로 표현
Multiplexing/demultiplexing
- Multiplexing : 출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해서 각 데이터에 헤더 정보로 캡슐화하고, 그 세그먼트들을 네트워크 계층으로 전달 -> transport에서 데이터를 모은 뒤 헤더파일을 추가하여 네트워크로 전달, 전송
- demultiplexing : 목적지에서 받은 세그먼트들을 조합하여 올바른 소켓으로 전달
TCP/UDP segment format
-
source port# : 출발지 포트 번호 - 16bit
-
dest port# : 목적지 포트 번호 - 16bit
-
other header fields : 기타 헤더 필드들
-
application data(payload) : 애플리케이션 데이터(메시지)
-
host는 IP address와 port number를 이용하여 적절한 프로세스에 연결
Connectionless demultiplexing
-
UDP에서 portnumber를 만들어줌
-
destination의 IP address를 가지고 전송
-
세그먼트를 받았을 때, destination port number가 같은지 확인
-
IP address확인하여 port number만 일치 한 것인지 확인
-
소스 포트넘버와 목적지 포트넘버를 포함하여 세그먼트를 전송
-
포트넘버가 겹치더라도 일단 그냥 받고 IP address를 확인
Connection-oriented demux
-
TCP socket의 4가지 식별자 : source IP address, source port number, dest IP address, dest port number
-
3개의 segment들이 한꺼번에 IP address가 B인 곳에 전송 되면 포트 번호로 구분하여 각각에 맞는 소켓에 연결해줌
- threaded server
- process들은 완전 독립되어 있어서 어떤 변수도 관여할 수 없지만 한 프로그램 안에서 여러 thread가 관여 할 수 있음
UDP(User Datagram Protocol[RFC 768])
-
loss, delay, segment의 순서바뀜 등의 책임을 일체 지지 않지만 최선을 다해 전송함 -> 모두 application에서 처리
-
데이터를 보내기만 하면 끝(누구에게서 왔는지 필요 없음) - connectionless
-
TCP는 일반적으로 hand shaking과정을 거친 후 전송을 시도하지만, UDP는 그냥 전송
-
segment들은 각자 독립적으로 처리
-
사용되는 곳 : Streaming, DNS, [SNMP(Simple Network Management Protocol)-network layer와 소통]
-
혼잡제어, 연결 등 TCP의 기능은 일체 없음
-
header : 길이, checksum(가장 간단한 에러 체크), data
-
length : segment의 길이(bytes)
-
checksum : 오류 검출을 제공 - 세그먼트가 출발지로부터 목적지로 이동했을 때, UDP 세그먼트 안의 비트에 대한 변경사항이 있는지 검사
-
UDP는 세그먼트 안의 모든 16비트 워드 단위로 더하고 이에 대하여 다시 1의 보수를 수행하며, 덧셈 과정에서 발생하는 오버플로우는 '윤회식 자리올림(wrap around) - 가장 하위 비트에 더해줌' 함
-
보수를 취하여 1은 0으로 0은 1로 바꿈
-
수신자는 UDP에서 보낸 checksum과 받은 모든 워드(16비트 단위)들을 더함
-
오류가 발생하지 않았다면 모든 자리의 수가 1이 되어야 함
-
이 중 하나라도 0이 있다면 패킷에 오류가 발생했음을 알 수 있음
'네트워크 설계' 카테고리의 다른 글
[11월5일]GBN과 SR (0) | 2018.11.14 |
---|---|
[10월31일]TCP (0) | 2018.11.04 |
[10월17일]Domain name System(DNS) (0) | 2018.10.21 |
[10월15일]Web and HTTP (0) | 2018.10.20 |
[10월8일]chapter 2 - application layer (0) | 2018.10.14 |