Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

TCP / UDP 본문

IT/Computer Science

TCP / UDP

빌드이너프 2023. 1. 11. 11:14

Transport Layer(전송 계층)

  • 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해주면서 종단 간(End Point)의 사용자들에게 신뢰성 있는 데이터를 전달하는 계층
  • 순차 번호 기반의 오류 제어 방식을 사용
  • 종단 간 통신을 다루는 최하위 계층으로 종단 간 신뢰성 있고 효율적인 데이터 전송
  • 전송 계층 프로토콜: TCP, UDP
  • 종단 간 신뢰성 있는 데이터 전송을 담당하는 계층
더보기

신뢰성: 데이터를 순차적, 안정적인 전달

전송: 포트 번호에 해당하는 프로세스에 데이터 전달


Transport Layer가 없을 경우

데이터의 순차 전송이 원활하지 않음 송신자(1 2 3) -> 수신자(2 3 1)
Flow(흐름 문제) 수신자가 처리할 수 있는 데이터량 초과
원인: 송수신자 간의 데이터 처리 속도 차이
Congestion(혼잡 문제) 네트워크가 혼잡할때
원인: 네트워크의 데이터 처리속도(ex. 라우터)
  • Hello Nice to meet you -> 데이터 손실 -> Hell     to      you

 

 

 

 


TCP(Transmission Control Protocal)

  • 신뢰성 있는 데이터 통신을 가능하게 해주는 프로토콜
  • Connection 연결(3 way-handshake)- 양방향 통신
  • 데이터의 순차 전송 보장
  • Flow Control(흐름 제어), Congestion Control(혼잡 제어), Error Detection(오류 감지)
  • 애플리케이션에게 신뢰적이고 연결지향형 서비스 제공
  • TCP(패킷 추적 관리)와 IP(배달)는 함께 사용됨
  • 신뢰적 전송을 보장하기 위해 handshake하기 때문에 TCP의 속도가 느림
  • 3-way handshake 과정을 통해 연결 설정, 4-way handshake를 통해 해제함
  • 전송제어 프로토콜은 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나

Segment(세그먼트)

  • TCP로 연결된 세션간의 전달되는 데이터 단위
  • 전송계층의 패킷(컴퓨터 간 데이터를 주고 받을때 네트워크를 통해 전송되는 데이터 조각)

TCP Segment


 

TCP 특징

특징 설명
신뢰성 보장 - 패킷 손실, 중복, 순서 바뀜 등이 없도록 보장
- TCP 하위 계층인 IP 계층의 신뢰성 없는 서비스를 보완하여 신뢰성 제공
연결 지향적 특징 - 같은 전송의 UDP가 비연결성인 것과는 달리 ,TCP는 연결 지향적
- 양단간 애플리케이션/프로세스는 TCP가 제공하는 연결성 회신을 통하여 서로 통신
흐름제어
(Flow Control)
- 흐름 제어 기능을 활용하여 송신(송신 전송률) 및  수신(수신 처리율) 속도를 일치시킴
혼잡 제어
(Congestion Control)
- 네트워크가 혼잡하다고 판단될 때는 혼잡에서 기법을 사용하여 송신율을 감속함

TCP 헤더 구조

TCP 헤더 구조

 

필드 설명
Source/Destination Port(각 16비트) - 송신지 Port 번호, 목적지 Port 번호
- 양쪽 호스트 내 종단 프로세스 식별
Sequence Number(32비트) - 바이트 단위로 구분되어 순서화되는 번호
- 이를 통해, TCP 에서는 신뢰성 및 흐름 제어 기능 제공
Acknowledgement Number(32비트) - 확인응답번호/승인번호
- 수신하기를 기대하는 다음 바이트 번호
- 마지막 수신 성공 순서번호 + 1
HLEN(Header Length, 4비트) - TCP 헤더 길이를 4바이트(32비트) 단위로 표시
Flag Bit(6개) - 플래그는 URG, ACK, PSH, RST, SYN, RIN으로 구성
- TCP 연결 설정과 연결 해제 메시지를 구분하는 것이 제어 필드의 기능(제어 필드는 1Bit로 구성)
URG(Urgent) - 긴급 포인터 필드의 값이 유효한지 여부 표시
ACK(Acknowledgment) - ACK 필드의 값이 유효한지 여부 표시
PSH(Push) - 수신 애플리케이션에 버퍼링된 데이터를 상위 계층으로 푸쉬해줄지 여부를 질의하는 역할
RST(Reset) - 강제 연결 초기화
SYN(Synchronize) - 동기화 시퀀스 번호
FIN(Finish) - 남은 송신 측 데이터 없음
Window Size(16비트) - 해당 세그먼트의 송신측이 현재 수신하고자 하는 윈도의 크기(기본 단위는 바이트)
- acknowledgement 필드의 시퀀스 번호보다 큰 값이어야 함
Checksum(16비트) - 헤더 및 데이터의 에러 확인을 위해 사용되는 16비트 체크 섬 필드
Urgent Pointer(16비트) - URG 플래그가 설정된 경우, 이 16비트 필드는 시퀀스 번호로부터의 오프셋을 나타냄
- 이 오프셋이 마지막 긴급 데이터 바이트를 가리킴
Options and Padding - 최대 40 바이트까지 옵션 데이터 포함 가능

UDP(User Datagram Protocol)

  • 비연결성, 신뢰성이 낮음
  • 순서화되지 않은 데이터그램 서비스를 제공하는 전송(4계층)계층의 통신 프로토콜
  • 데이터그램(독립적인 관계를 지니는 패킷) 단위로 처리
  • 연결 설정 및 해제하는 과정 없음
  • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류 검출
  • 흐름제어 및 혼잡제어를 수행하지 않기 때문에 속도가 빠르고 네트워크 부하가 적음(데이터 전송의 신뢰성 낮음)
  • 연속성이 중요한 서비스, 스트리밍 서비스에 부합함
특징 설명
비신뢰성 - 데이터 그램 지향의 전송계층용 프로토콜(논리적인 가상회선 연결이 필요 없음)
- 메시지가 제대로 도착했는지 확인되지 않음(확인 응답 없음)
- 검사 합을 제외한 특별한 오류 검출 및 제어 없음(오류 제어 거의 없음)
- 할당되는 논리적 경로가 없음
- 각각의 패킷이 다른 경로로 전송됨
순서화되지 않은
데이터그램 서비스 제공
- 수신된 메시지의 순서를 맞추지 않음
- 흐름 제어를 위한 피드백을 제공하지 않음
실시간 응용 및
멀티캐스팅 가능
- 빠른 요청과 응답이 필요한 실시간 응용에 적합
- 여러 다수 지점에 전송 가능
단순 헤더 - 헤더는 고정 크기의 8바이트(TCP는 20바이트)만 사용
- 헤더 처리에 시간과 노력을 필요하지 않음

 

UDP 헤더 구조

필드 설명
Source Port Number 송신 포트번호(포트번호를 사용해서 상위 단계 프로그램 식별)
Destination Port
Number
- 수신 포트번호
- 선택 항목, 사용하게 되면 응답받게 될 포트 표시함
UDP Length - 바이트 단위의 길이
- 최솟값 8(헤더만 포함될 때)
UDP Checksum 선택 항목, 체크 섬 값이 0이면 수신 측은 체크 섬 계산 안 함
Data(가변) 가변 길이 데이터

TCP/UDP

  • UDP와 TCP는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방함
  • -> 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 포트로 간주함
  • 같은 모듈(UDP / TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우
  • -> 서로 다른 포트 번호를 동적으로 할당함(동적할당에 사용되는 포트번호: 49,152~65,535)
프로토콜 종류 TCP UDP
연결 방식 연결형 서비스 비연결형 버시브
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서 바뀔 수 있음
수신 여부 확인 확인함 확인하지 않음
통신 방식 1:1 1:1 / 1:N / N:N
신뢰성 높음 낮음
속도 느림 빠름

더보기

3-way handshake / 4-way handshake는 다음에..

이해가 잘 안감

 

 


참고자료

수제비 정보처리기사 실기 11-46 ~ 11-49

averycode, [네트워크] TCP/UDP와 3 -Way Handshake & 4 -Way Handshake

우아한Tech, [10분 테코톡] 👨‍🏫르윈의 TCP UDP

 

'IT > Computer Science' 카테고리의 다른 글

Git / GitHub  (1) 2023.01.13
Transaction 트랜잭션  (0) 2023.01.12
SOLID 5가지 설계 원칙  (2) 2023.01.10
Design Pattern 디자인 패턴  (1) 2023.01.09
Compiler 컴파일러  (0) 2023.01.06