일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 투어
- 서블릿
- mvc
- 백준
- Servlet
- 포두부 보쌈
- 2589
- BFS
- 쓰레드 풀
- 알고리즘
- 2839
- 스프링 MVC
- 고모네 콩탕
- 완도산회
- 맛집 투어
- 양꼬치
- HTTP API
- 문자열 압축
- dp
- 2020 KAKAO BLIND
- 1로 만들기
- 동적 프로그래밍
- 설탕 배달
- 프로그래머스
- 스프링
- 다이나믹 프로그래밍
- Spring
- 맛집
- 호유동
- 2638
- Today
- Total
프로그래밍 공방
트랜스포트 계층 : Transport Layer / UDP 본문
트랜스포트 계층 : Transport Layer
서로 다른 호스트에서 동작하는 애플리케이션 프로게스들 간의 논리적 통신을 제공
(논리적 통신은 애플리케이션 관점에서 보면 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보이게 한다)
* 네트워크 계층 프로토콜은 호스트들 사이의 논리적 통신을 제공
세그먼트
트랜스포트 계층에서 네트워크 패킷을 지칭하는 용어
(애플리케이션 메시지를 작은 조각으로 분할하고, 각각의 조각에 트랜스포트 계층 헤더를 추가해서 생성)
다중화 / 역다중화
역다중화
트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업
(소켓은 유일한 식별자를 가진다 / 세그먼트는 세그먼트가 전달될 소켓을 가리키는 특별한 필드를 가진다)
* 특별한 필드 : 출발지 포트 번호 필드, 목적지 포트 번호 필드(각각의 포트 번호는 16비트 정수)
다중화
소켓으로부터 데이터를 모으고, 세그먼트를 생성하기 위해서 각 데이터에 헤더 정보로 캡슐화 하고, 그 세그먼트들을 네트워크 계층으로 전달하는 작업
UDP : 비연결형 트랜스포트
트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 동작하는 프로토콜
(다중화/역다중화, 간단한 오류 검사 기능 외에는 IP에 아무것도 추가하지 않는다)
비연결형
세그먼트를 송신하기 전에 송신 트랜스포트 계층 개체들과 수신 트랜스포트 계층 개체들 사이에 핸드셰이크를 하지 않는다.(ex. DNS)
UDP의 특징
1. 어떤 데이터를 언제 보낼지에 대해 애플리케이션 레벨에서 더 정교한 제어가 가능하다
실시간 애플리케이션의 경우 종종 최소 전송률을 요구하고, 지나치게 지연되는 세그먼트 전송을 원하지 않으며,
조금의 데이터 손실은 허용할 수도 있다.
2. 연결 설정이 없다.
세방향 핸드셰이크와 같이 형식적인 예비동작 없이 전송을 시작하므로 연결을 설정하기 위한 어떤 지연도 없다.
(DNS가 TCP로 동작하면 많이 느려질 것이다)
3. 연결 상태가 없다.
TCP의 경우 종단 시스템에서 연결 상태를 유지한다. 이에 반해 UDP는 연결 상태를 유지하지 않아
특정 애플리케이션에 할당된 서버는 애플리케이션이 TCP보다 UDP로 동작할 때 좀 더 많은 클라이언트를 수용할 수 있다.
4. 작은 패킷 헤더 오버헤드
TCP 세그먼트가 20바이트의 헤더 오버헤드를 갖는 반면 UDP는 8바이트의 오버헤드를 갖는다.
UDP 세그먼트 구조
2바이트씩 구성된 4개의 필드 + 애플리케이션 데이터(메시지)
출발지 포트 번호, 목적지 포트 번호 : 역다중화를 위함
길이 : 헤더를 포함하는 UDP 세그먼트의 길이(바이트 단위)
체크섬 : 세그먼트에 오류가 발생했는지를 검사하기 위해 수신 호스트에서 사용되는 비트
UDP 체크섬
오류 검출을 제공
(세그먼트가 출발지로부터 목적지로 이동했을 때 UDP 세그먼트 안의 비트에 대한 변경사항이 있는지 검사하는 것)
체크섬 확인 과정
송신 측에서 UDP는 세그먼트 안에 있는 모든 비트를 16비트 워드 단위로 더하고 이에 대하여 다시 1의 보수를 수행한다. 이 결과값을 체크섬 필드에 삽입된다.
(덧셈 과정에서 발생하는 오버플로는 "윤회식 자리올림" 한다)
수신자에서는 체크섬을 포함한 4개의 모든 16비트 워드들을 더한다. 만약 패킷에 어떤 오류도 있지 않으면 수신자에서의 합은 1111111111111111이 될 것이며 만약 비트 중에서 하나라도 0이 있다면 패킷에 오류가 발생했음을 알 수 있다.
링크 계층 프로토콜이 오류 점검을 제공하는데 UDP 체크섬을 통해 오류 검사를 수행하는 이유
-> 출발지와 목적지 사이의 모든 링크가 오류 검사를 제공한다는 보장이 없기 때문
종단간의 원리(end-end principle)
주어진 링크 간의 신뢰성과 메모리의 오류 검사가 보장되지 않기 때문에, 종단간의 데이터 전송 서비스가 오류 검사를 제공한다면, UDP는 종단간의 트랜스포트 계층에서 오류 검사를 제공해야만 한다.
(* UDP는 오류 검사를 제공하지만 오류를 회복하기 위한 어떤 일도 하지 않는다.)
'개발 > 네트워크' 카테고리의 다른 글
애플리케이션 계층 : Application Layer (0) | 2021.02.01 |
---|---|
Spanning Tree Protocol / 스패닝 트리 프로토콜 (0) | 2021.01.10 |
IP Address (0) | 2021.01.02 |
유니캐스트, 브로드캐스트, 멀티캐스트 (0) | 2020.12.06 |
MAC address (0) | 2020.12.05 |