본문 바로가기

네트워크

Transport protocol (TCP/UDP)

Transport protocol이란?

- 종단 시스템에서만 작동하는 프로토콜

- OS가 이해해준다.

- 응용계층에서 들어온 massage를 segment로 쪼개 네트워크 계층으로 보낸다.

- 종류 : TCP/UDP

 
 

Transport layer VS Network layer

Transport layer
 
​network layer
 
프로세스 사이 논리적 통신
 
호스트 사이 논리적 통신
 
Segment를 만듦
 
Datagram을 만듦
 
TCP/UDP
 
IP
 
 
 
 

TCP VS UDP

한눈에 보기 : 여기 참고

TCP
UDP
연결형(Connection-Oriented):
패킷은 아무 길로 매번 다르게 간다. 따라서 실제 특정 길로 연결 된게 아니라 오류생겨도 확인이 된다는 뜻, 즉 논리적으로 연결되어있다. (= handshaking)
 
비연결형(connectionless) :
연결을 하지 않는 것이 아니라 받을 수 있는지 확인하지 않고 보내고 싶을 때 보냄
 
신뢰성:
확인을 통한 신뢰성 있는 통신 서비스 제공,
순서 중요(패킷에 시퀀스 번호 부여)
 
비신뢰성:
패킷 손실이 일어나도 책임지지 않음.
=> 해결책 : 응용 계층에서 알아서 하기
 
상태정보 :
종단 시스템에서는 각각의 연결에 대한 상태정보를 유지
 
비상태정보 (Non-state):
정보를 유지하지 않음.
 
흐름 제어 :
네트워크 상태에 따라 처음엔 천천히 보내고 빠른 응답이 오면 원래 속도로
 
비정규적인 송신률(Unregulated Send Rate):
패킷 손실이 발생하더라도 지속적인 최소 전송률 요구
 
혼잡 제어 :
네트워크 문제(혼잡 현상) 제어
 
최선형 서비스 :
최선을 다 하겠지만 책임은 지지 않음.
 
스트림 통신 :
데이터를 바이트 단위로 나눠서 전송
 
​small size header
 
전이중통신 :
동시에 양방향 전송과 피기배킹(데이터와 확인응답 한방에 보내기)
 
performance 측에서 delay에 강함
 
 
혼잡 제어 X:
상대 일처리 속도를 고려하지 않음.
 
사용 예 :
파일 전송, SMTP 등등
 
사용 예 :
DNS, ZOOM, SKYPE, SNMP(네트워크 관리 프로토콜), 스트리밍 서비스
 
 
 

TCP

• 특징

- 패킷에 번호화 시스템 (시퀀스 부여)

- 흐름 제어

- 오류 제어

- 혼잡 제어

 

• 헤더 구조

- Source Port : 송신지 port

- Destination Port : 수신지 port

- Sequence Number : 보내고자 하는 데이터의 첫 byte

- Acknowledgment Number : 가져올 다음 시퀀스 번호와 누적 Ack

 
 

• Sequence Number와 Ack 내용

여기 참고

 
 

• 흐름제어 방법

응용계층과 전송계층 사이에는 처리 속도를 맞춰줄 버퍼가 존재한다.

 

receiver는 sender에게 본인의 rwnd를 알려

sender가 너무 빠르고 많이 보내 receiver의 버퍼가 넘치는 상황을 만들지 않도록 한다.

버퍼

RcvBuffer의 사이즈는 기본적으로 4096 bytes이고 상황에 따라 OS가 재조정한다.

 

Sender는 rwnd값을 보고 윈도우 사이즈(이미 보냈지만 Ack를 받지 못한 영역)을 재조정

 
 
 

• 연결 설정 (3-way handshaking)

연결하기

1. 서버가 먼저 대기 (수동 개방)

2. 클라이언트부터 시작 (능동 개방)

3. 클라이언트는 SYN 플래그가 1로 설정된 SYN 세그먼트 전송

4. 서버는 SYN과 ACK 플래그가 1로 설정된 세그먼트 전송

5. 단순한 ACK 세그먼트 전송 (data가 아님)

A bit : Ack bit, S bit : Start bit, F bit : finish bi
  1. OS가 임의로 설정한 Seq와 SYN bit를 1로 설정해 전송 (S bit)
  2. OS가 임의로 설정한 Seq와 Ack number는 x+1로, SYN bit와 Ack bit는 1로 설정해 전송 (A bit + S bit)
  3. Ack bit는 1로, Ack number는 y+1로 설정해 전송 (A bit)

 

절반 닫기

데이터 요청은 하지 않지만 수신이나 응답은 가능

ex ) 서버가 모든 데이터를 수신한 후에 처리를 시작하는 경우 발생

 
 

연결 끊기

  1. 절반닫기 : OS가 임의로 설정한 Seq와 FIN bit를 1로 설정해 전송 (A bit + F bit)
  2. Client 연결끊기 : Ack bit는 1로, Ack number는 x+1로 설정해 전송 (A bit)
  3. 절반닫기 : OS가 임의로 설정한 Seq와 FIN bit는 1로 설정해 전송 (A bit + F bit)
  4. Server 연결끊기 : Ack bit는 1로, Ack number는 y+1로 설정해 전송 (A bit)
 
 

UDP

• 헤더 구조

 

 

Checksum : 전송과정에 발생하는 에러를 탐지하기

sender와 receiver 둘 다 checksum을 생성하고 비교 (동시에 둘다 에러 발생시 탐지 불가)

 
 
 

단어정의

MSS (maximum segment size) : packet을 최대한 보낼 수 있는 size

 

 

'네트워크' 카테고리의 다른 글

UDP/TCP의 RDT 1.0~3.0  (0) 2022.07.17
Multiplexing + demultiplexing  (0) 2022.07.17
FTP (File Transfer Protocol)  (0) 2022.07.15
Video + Multimedia (Steaming)  (0) 2022.07.15
TCP/UDP 차이 (+SSL)  (0) 2022.07.15