Application Layer에서 요구하는 것에 따라 TCP, UDP 선택한다.
UDP (IP/PORT)
TCP : E-mail, HTTP, FILE 신뢰, 복잡, 멀티 플렉싱 과 디멀티플렉싱만 제공 (S/D)(IP/PORT)
UDP segment header
checksum: application data에 데이터 전송 오류가 있는지 확인
보내는 사람과 받는 사람의 checksum 연산결과가 같으면 정상, 아니면 패킷을 버릴 수 있다. application layer에서 복구하기도 한다. 대부분 버린다.
UDP checksum
Goal : 전송된 segment에서 오류 (즉, 뒤집힌 비트) 감지
010101010 -->0110110
pure하지 않고 noise가 있다
데이터 신호처리 시스템 영역
대역폭이 다른 것을 선택한다.
sender :
▪ UDP segments의 내용 (UDP 헤더 필드 및 IP 주소 포함)을 16 비트 정수 시퀀스로 처리합니다.
▪ checksum : 세그먼트 내용의 추가 (1의 보완 합계)
▪ UDP checksum 필드에 입력 된 체크섬 값
0101010
1010101
1's complement
receiver :
▪ 수신된 segmnet의 checksum 계산
▪ 계산된 checksum이 checksum field 값과 같은지 확인합니다.
• 같지 않음
-오류가 감지 됨
• 같음
-오류가 감지되지 않음. 하지만 그럼에도 불구하고 오류일까요? 더 늦게 ….
Internet checksum: an example
예 : 두 개의 16 비트 정수 더하기
참고 : 숫자를 추가 할 때 최상위 비트의 수행을 결과에 추가해야합니다.
#처음 두 16bit 정수를 더해서 wraparoung를 구하고 overflow가 발생하면 맨 아래 bit에 추가해주고 1의 보수를 취해서 checksum을 구성한다.
# 처음 두 16bit 정수의 마지막 비트가 10-> 01 / 01->10으로 바뀌어도 checksum의 결과는 똑같다 따라서 weak protection이다.
Calculating the UDP Checksum: Wireshark
• Source IP = 192.168.0.31
• Destination = 192.168.0.30
• UDP source port = 20
• UDP destination port = 10
• Data (2 bytes) = “Hi”
extra example
#의사 헤더가 여기에서 시작됩니다. // IP packet과 UDP packet에서
#의사 헤더는 여기에서 끝나므로 여기에 실제 udp 헤더를 추가합니다. // UDP packet에서
#이제 모든 정보를 얻었으므로 더하겠습니다.
#이전 항목에서 우리의 값은 16 bit를 초과합니다.
checksum이 16 bit이어야하므로 작동하지 않습니다.
16 bit를 얻기 위해 t에서 32 bit가되도록 결과를 확장합니다.
따라서 우리는 16 진수 000을 1 CA 39에 추가합니다.
또한 이진 값 000을 찾아서 이진 열에 추가합니다.
이제 32 비트 값을 얻었으므로 상단 00 01을 가져와 하단 ca 39에 더합니다.
#우리는 거기에 가고 있습니다.
이제 위의 값을 얻었으므로 1의 보수를 찾아야합니다.
이를 위해 위 결과의 0과 1을 교환합니다.
C0A8+001F+C0A8+001E+000A + 0014+000A+000A+4869 = 1 CA39
1 CA 39 --> CA 39 + 00 01 = CA 3A
Summary: UDP
▪ "no fills" 프로토콜 :
• segment가 손실되거나 순서대로 배송되지 않을 수 있습니다.
• 최선의 서비스 : "최선을 보내고 희망"
# net layer와 app layer 사이에서 mux와 demux만 추가한다 (+checksum)
▪ UDP에는 다음과 같은 장점이 있습니다.
• 설정 / handshacking 필요 없음 (RTT 발생 없음)
• 네트워크 서비스가 손상되었을 때 작동 할 수 있습니다.
• 안정성에 도움 (checksum)
▪ application layer (예 : HTTP / 3)에서 UDP 위에 추가 기능을 구축합니다.
'컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 Week 10-1-2 : reliable data transfer (0) | 2020.11.25 |
---|---|
컴퓨터 네트워크 Week 9-2 : Multiplexing & Demultiplexing (0) | 2020.11.03 |
컴퓨터 네트워크 Week 9-1: Transport Layer (0) | 2020.11.03 |
컴퓨터 네트워크 Week 7-2: CDN (0) | 2020.10.17 |
컴퓨터 네트워크 Week 7-1 : P2P application (0) | 2020.10.13 |