밍경송의 E.B
[네트워크] TCP와 UDP, 그리고 IP (TCP Header, UDP Header, IPv4, IPv6) 본문
해야지 ...웅... 아직 한참 남았잔ㄴ어..ㅇ네
오늘은 이전에 시간에 다룬 Internet Protocol Stack에 이어서 이번에는 수송 계층(transport layer)에서 사용하는
프로토콜 중 가장 대표적인 TCP와 UDP에 대해서 알아보겠습니다.
TCP(Transmission Control Protocol)--------------
:응용 계층에게 신뢰적인 데이터 전송을 보장하는 논리적인 연결을 제공. (논리적 연결이란? 한 쌍의 포트값)
그러니까 쉽게 말해서 연결형 서비스를 지원하는 프로토콜이라고 생각하면 될 것 같습니다.
TCP는 보통 IP와 함께 사용하는데, IP는 데이터의 전송을 처리하고 TCP는 패킷을 추척/관리하는 역할을 합니다.
<TCP의 특징>
- 연결 지향 방식 --> 높은 신뢰성 보장
- 3-way handshaking과정을 통해 연결 -> 4-way handshaking을 통해 해제
- UDP보다 속도가 느림
- Full-Deplex(전이중), Point to Point(점대점) 방식.
TCP는 연속성보다 신뢰성이 있는 전송이 필요할 때 사용되는 프로토콜로 파일 전송 등과 같은 경우에 사용됩니다.
<TCP 서버의 특징>
- 서버 소켓은 연결만을 담당
- 연결과정에서 반환된 클라이언트 소켓은 데이터 송수신에 사용됨
- 스트림 전송으로 전송 데이터의 크기가 무제한
- 패킷에 대한 응답 때문에 성능이 낮음 (시간지연, CPU 소모)
- Streaming 서비스에 불리함 (손실된 경우 재전송 요청을 하기 때문에)
---- 제대로 다루지 않은 부분이라 일단 훑고만 가요..
TCP header에 대해 자세히 알아봅시다!
# Source/Destination port: 각 16bits/세그먼트의 출발지와 목적지를 나타내는 필드 (IP 주소는 네트워크 계층의 IP 헤더에 담기기 때문에 포트를 나타내는 필드만 존재)
# Sequence Number: 32 bits/ 전송하는 데이터의 순서를 의미 -> 수신자가 쪼개진 세그먼트의 순서 파악 가능
# Acknowledgment Number: 32 bits/ 데이터를 받은 수신자가 예상하는 다음 시퀀스 번호 (다음에 보내줘야 하는 데이터의 시작점을 의미함)
# Header Length(Data offset): 4 bits/ 전체 세그먼트 중에서 데이터가 시작되는 위치가 어디부터인지를 표시
# Reserved: 미래를 위해 예약된 필드 (모두 0으로 채워져야 함)
# Flags: 현재 세그먼트의 속성을 나타냄 (수업에는 여기서 flow control을 한다고 배움)
# Window: 한 번에 전송할 수 있는 데이터의 양을 의미하는 값을 담음 (최대 64KB)
# Checksum: 데이터를 송신하는 중에 발생할 수 있는 오류 검출을 위한 값 (XOR 해서 header랑 비교)
# Urgent pointer: 긴급 포인터 (URG Flag가 1이면 이 포인터가 가리키는 데이터를 우선 처리함)
# Options: TCP의 기능을 확장할 때 사용하는 필드(크기가 고정된 것이 아니라 가변적)
UDP(User Datagram Protocol)------------------------
:최소한의 프로토콜 기법을 이용하여 두 프로시저들 사이에 메세지를 보낼 수 있도록 만든, 비연결형 프로토콜
따라서, TCP에서 언급한 논리적 연결이 제공되지 않기 때에 각각의 패킷은 다른 경로로 전송되고 서로 독립적인 관계를 지닙니게 됩니다.
<UDP의 특징>
- 비연결형 서비스로 데이터그램 방식을 제공
- 세그먼트(메세지)의 배달 확인과 전송 순서 및 중복 전달을 방지하는 기능을 제공하지 않음
- UDP 헤더의 checksum 필드를 통해 최소한의 오류만 검출 (필수는 아님)
- 신뢰성이 낮음
- TCP보다 속도가 빠름
- 트랙잭션 기반 응용들이 주로 사용함(SNMP)
UDP는 연결을 설정/해제하는 고정이 없고 흐름이나 혼잡 제어와 같은 기능도 처리하지 않기 때문에
TCP보다 속도가 빠르고 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터의 전송은 보장하지 못합니다.
따라서, 신뢰성보다는 연속성이 중요한 서비스(예를 들면 실시간 스트리밍 서비스)에 자주 사용됩니다.
<UDP 서버의 특징>
- UDP에는 연결 자체가 없어서 서버 소켓과 클라이언트 소켓의 구분이 없음
- 소켓 대신 IP를 기반으로 데이터를 전송
- 서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결될 수 있음
- 데이터그램(메세지) 단위로 전송되며, 크기(65535 bytes) 초과 시 쪼개서 보냄
- Flow control이 없어서 패킷이 제대로 전송됐는지 확인 불가
확실히 UDP의 특징에 따라 UDP Header에는 TCP Header에 비해 필드가 현저히 적은 것을 확인할 수 있습니다.
위 TCP Header에서 자세한 내용을 다뤘으니 여기선 생략하도록 하겠습니다.
TCP와 UDP의 차이를 제대로 보여주는 표를 첨부합니다.. 참고하세용
Header 구조에 대해 정리하는 김에 IPv4와 IPv6 Header의 구조에 대해서도 살펴보겠습니다.
IP header는 수송 계층에서 내려오는 세그먼트와 함께 IP 데이터그램을 구성하게 된다는 것을 지난 포스팅에서 배웠습니다.
IPv4 Header
# Version: 4bits/ IPv6에서는 6bits
# IHL(Internet Header Length): 실제 헤더의 길이 필드
# TOS(Type Of Service): DS + ECN/ 서비스의 품질을 나타내는 필드 (정보 기록)
# Total Length: 헤더뿐 아니라 Payload까지 합쳐진 전체 길이
# Identification, Flags, Fragment Offset: 데이터 크기가 커져서 잘라졌을 때 알아볼 수 있는 값
*Flags: 최대 단위가 넘어갈 경우 1로 셋팅(더 이상 쪼개지 말라는 신호),
*Fragmetn Offset: 쪼개진 데이터를 복구할 때 필요한 데이터의 순서
# Time to Live: 생명주기, 각 홉마다 TTL이 1씩 줄어들며 경로를 확인
# Protocol: 상위 프로토콜이 어떠한 것인지 알려주는 필드 (TCP:6 , UDP:17)
# Header Checksum: 현재 헤더에 오류가 있는지 확인
IPv6 Header
IPv6은 기존 IP에서 다양한 기능을 보완하여, 최신 네트워크의 높은 속도와 점점 늘어나는 그래픽과 비디오를 포함한 혼합된 데이터 스트림에 맞게 설계되었습니다.
이는 더 많은 주소의 필요성 때문에 설계되었기 때문에 128bits의 발신지 및 목적지 주소 필드를 가진답니다!
마지막으로 표준화 틀로서의 프로토콜 구조에 대해 간략하게 다룬 후 오늘의 공부를 마무리하도록 하겠습니다.
전체적인 통신기능은 7개의 명확한 계층으로 나누어져 있는데, 이는 전체 기능을 여러 개의 모듈로 나눈 후, 모듈 사이의 인터페이스를 가능한 한 간단하게 만든 것입니다. 하위 계층일 수록 더 세분화된 기능을 다루고, 상위 계층은 이러한 하위 계층의 상세한 내용에 대해서 알 필요가 없는다는 특징이 있습니다. 이전에 배웠조..!
각 계층에서 요구되는 표준화의 특성
- 프로토콜 명세: 다른 시스템의 동일 계층에 있는 두 개체는 프로토콜을 이용하여 상호동작한다. (프로토콜의 정확한 서술 필요)
- 서비스 정의: 각 계층에서 동작하는 프로토콜 외에도 표준에는 각 상위 계층에 대한 서비스도 포함되어야 한다.
- 주소 지정: 각 계층은 다음 상위 계층의 개체에 대해서 서비스를 제공하며 이 개체는 서비스 접속접(SAP)를 통하여 식별된다.
그럼... 이상으로 오늘의 공부를 마치겠습니다. 다음 시간에는 Internet-based Application layer에 대해서 다뤄보겠습니다 뿅 수고하셨습ㅁㅣ당
☆자료참고:
'CSE > 정보통신공학' 카테고리의 다른 글
[네트워크] Socket, Socket programming (스트림 소켓, 데이터그램 소켓) (0) | 2023.04.19 |
---|---|
[네트워크] Application layer- Client-server network, P2P(Peer-to-Peer) network, IPC (0) | 2023.04.19 |
[네트워크] Internet Protocol Stack이란? (+ISP란) (0) | 2023.04.18 |
[네트워크] network core, router, packet/circuit switching (0) | 2023.03.29 |
[네트워크] link, node, physical media란? (0) | 2023.03.28 |