전송 계층 - Transport Layer (L4)
- 프로세스 사이의 메시지 전달에 관여하고 프로세스에서 프로세스로 전달(Process to Process)
- 프로세스의 구별을 위해서 포트번호를 사용
- 클라이언트의 프로세스는 시간에 따라 생성, 소멸을 반복한다.
- 클라이언트의 포트번호는 운영체제에 의해서 할당된다.
- 서버 프로세스는 클라이언트에게 상시 서비스를 해줘야한다.
- 서버의 포트번호는 고정적으로 할당되고 모두 알고 있어야 하기 때문에 알려진 포트 번호를 사용한다.
ex) FTP: 20,21 SMTP: 25 DNS: 53 HTTP: 80
※포트번호 : IP주소를 가진 컴퓨터에서 여러 개의 프로세스를 구분하기 위한 역할 (16비트 구성)
전송계층 프로토콜
1. User Datagram Protocol(UDP)
- UDP는 비연결형, 비신뢰성 수송 프로토콜로서 흐름제어나 에러제어가 없다.
- UDP 가 에러를 검출하면 단순히 폐기한다. (checksum으로 검출) - UDP는 오버헤드가 작은 아주 단순한 프로토콜에 이용된다.
Ex) DNS, SNMP
1.1 UDP 헤더
- UDP의 헤더는 8바이트의 고정된 크기를 갖는다.
- 체크섬의 계산은 선택사항이다. (계산되지 않으면 필드의 값은 0이다.)
1.2 UDP Checksum
- 가상헤더를 생성해서 체크섬을 계산하는데, 가상헤더에는 송신자 IP주소, 목적지 IP 주소, 프로토콜 필드, 전체 길이 필드로 구성된다.
- 체크섬 계산 방법
1.3 UDP 동작
- UDP는 비연결형 서비스를 제공한다.
- 데이터그램들 사이에 서로 관련이 없다.
- 번호를 붙이지 않는다.
- 연결설정이나 종료과정이 없다.
- 각 UDP데이터 그램은 서로 다른 경로로 전달될 수 있다. - UDP는 흐름제어나 에러제어가 없다.
- 수신자는 수신 메시지로 오버플로우 될 수 있다(흐름제어 X)
- 송신자는 메세지가 유실되거나 중복되었는지 알 수 없다.
1.4 UDP 사용
- 간단한 요청/ 응답 서비스에 적합하다.
- 프로세스에서 내부 흐름제어와 에러제어를 갖는 경우 적합하다.
- 멀티캐스팅에 적합하다.
- SNMP, RIP에서 사용한다.
2. Transmission Control Protocol (TCP)
- TCP는 프로세스간 통신, 스트림 전달 서비스, 전이중 통신, 연결지향 서비스, 신뢰성 있는 서비스를 제공한다.
- 연결 설정과 해체 과정이 존재한다.
- 데이터의 안전한 도착을 확인하는 ACK를 사용하여 신뢰성 있는 전송을 제공한다.
- TCP는 프로세스간의 통신을 위해 포트 번호를 사용한다.
2.1 스트림 전달 서비스
- TCP는 데이터를 바이트의 나열로 전달하는데 효율성을 위해 여러 바이트를 블록으로 구성된 세그먼트를 만들어 전송 한다.
2.2 TCP 특징
- TCP는 모든 바이트에 번호를 부여한다.
- 시작번호는 0 - 2^32 -1 사이의 임의의 번호를 갖는다.
- 번호는 흐름제어와 에러제어에 사용한다.
- 세금너트의 순서번호는 해당 세그먼트가 나르는 데이터의 첫번째 바이트 번호이다.
- ACK 번호는 수신해야 할 다음 바이트 번호이다.
- ACK번호는 누적 값으로서 수신자는 해당 번호 이전의 모든 바이트를 안전하게 받았음을 의미한다.
- 예를 들어 1234가 ACK번호라면, 1233바이트까지 모두 받았음을 의미한다.
2.3 TCP 헤더
- TCP 헤더는 20바이트이며, 옵션이 있으면 60바이트까지 존재할 수 있다.
- 헤더는 4바이트 단위로서 표시한다.
2.4 TCP 헤더의 제어필드
제어필드 | 설명 |
URG | Urgent Point가 유효하다. |
ACK | ACK가 유효하다 |
PSH | 세그먼트를 모으지 않고 바로 보낸다. |
RST | 연결 설정을 새로 한다. |
SYN | 연결 설정한다. |
FIN | 연결을 끊는다. |
2.5 Urgent Point
- 송신자는 수신자가 순서에 관계없이 데이터가 우선적으로 처리되길 요청할 수 있다.
- urgent point에 tcp 세그먼트에 앞에서부터 어디까지 긴급 메시지인지 주소를 나타내준다.
2.6 Checksum
- 무조건 해야한다.
- 방법은 UDP와 같은 방법으로 된다.
2.7 연결 설정과 해제
- 3way Handshake, 4way Handshake
2.8 흐름 제어
- 수신측에서 받을 수 있는 데이터 크기를 알려준 것을 Window Flow Control이라 하고 그 크기를 윈도우 사이즈라고 한다.
출처: https://www.youtube.com/watch?v=sEWkbFoqgMc
https://www.youtube.com/watch?v=7yiWXepobEk
https://wiki.mikrotik.com/wiki/Manual:Connection_oriented_communication_(TCP/IP)
http://telescript.denayer.wenk.be/~hcr/cn/idoceo/udp_header.html
http://telescript.denayer.wenk.be/~hcr/cn/idoceo/tcp_header.html
'네트워크' 카테고리의 다른 글
[네트워크] 네트워크 면접 준비 (0) | 2019.10.30 |
---|---|
[네트워크] 네트워크 보안 (0) | 2019.10.24 |
[네트워크] 네트워크 정리 (0) | 2019.10.15 |
[네트워크] 네트워크 정리 (0) | 2019.10.15 |
네트워크 정리 (0) | 2019.10.09 |
댓글