CS공부/네트워크

[컴퓨터 네트워크] TCP와 UDP

혜유우 2025. 2. 10. 22:55

한양대학교 이석복 교수님 <컴퓨터네트워크> 강의를 들으며 작성했습니다.

 

TCP(Protocol)
  • 신뢰성 있고 순서가 보장
  • flow control(receiver의 속도에 맞춰 데이터 보냄)
  • congestion control(sender slow down sending rate when network congested)
  • HTTP(Web), FTP(file transfer), Telnet(remote login), SMTP(email)
UDP(Protocol)
  • 신뢰성 없음
  • connectionless
  • streaming media, teleconferencing, DNS, Internet telephony

* 패킷은 비트 단위

Packet switching VS Circuit switching

1Mbps/s link

each user: 100 kb/s when "active". active 10% of time

1. circuit-switching: 10 users 사용

2. packet-switching: 35 users (하지만 사람들이 많이 몰리면 문제 발생) -> 실제 인터넷은 패킷 스위칭 사용

 

📍packet-switched networks에서의 delay

1. nodal processing delay

-맨 처음 라우터에 데이터가 들어오면 check bit errors

-목적지 확인 determit output link

2. queueing delay

-라우터에 들어오는 데이터의 속도가 나가는 속도보다 빠른 경우 

-time wating at output link for transmission

-depends on congestion level of router

-큐에 너무 많은 데이터가 쌓이면 패킷유실(큐도 한계가 있기 떄문)

3. transmission delay

-큐 바로 앞에 서서 파이프에 온전히 빠져나갈 때 생기는 딜레이

4. propagation delay

-마지막 비트가 다음 라우터까지 이동할 때에 생기는 딜레이

 

📍HTTP(hypertext transfer protocol)

-웹의 application layer protocol

-client/server model (client: browser that requests, receives and displays web object / server: web server sends objects in response to requests)

-TCP 사용

-stateless

 

📍Multiplexing & Demultiplexing

1. Muliplexing

패킷이 소켓에 의해 Application->Transport layer로 전달 될 때, 하나의 세그먼트에 캡슐화하여

Network layer로 전달하는 과정

데이터그램(Network layer의 패킷)에는 source IP, destination IP 주소를 가지고 있다

2. Demultiplexing

Transport->Application layer로 세그먼트가 전달 될 때, 올바른 소켓으로 전달하는 과정으로

세그먼트에 있는 헤더 정보를 통해 올바른 소켓응로 전달

 

각 레이어는 자신의 상위 레이어에게 서비스를 제공해주고 하위 레이어로부터 서비스를 제공 받는다

segment는 헤더+데이터로 이루어짐. 헤더에 중요한 정보(source port+dest port)

 

-checksum으로 전송 도중 에러가 발생했는지 판별할 수 있음

-UDP 헤더는 필드가 4개뿐(source port/dest port/length/checksum)

 

📍UDP가 하는 일

  • multiplexing/demultiplexing
  • 에러 체킹(체크썸)

 

신뢰성 있는 데이터 전달

window 크기만큼 패킷 전달

 

1. Go-back N

2. Selective repeat

 

TCP

1. point-to-point

sender와 receiver는 각 소켓끼리 일대일 통신

2. reliable, in-order stream

3. TCP congestion and flow control set window size

4. send&receive buffers

5. full duplex data

6. connection-oriented

7. flow coontrolled

 

전송 단위
Application layer: 메시지
Transport layer(TCP): 세그먼트
Network layer: 패킷
DataLink layer: 프레임

 

📍TCP segment structure  🌟🌟

포트 번호의 범위: 0~(2^16-1)

chechsum: 세그먼트가 에러가 있었는지 확인

 

Seq=42 -> 42번부터 보냄

ACK=79 -> 78번까지는 잘 받았다는 뜻(79번 줘~)

 

세그먼트 유실을 막기 위해 타이머 가동 (timer value는 항상 변하는 값)

 

Flow control

receiver 입장에서 버퍼에 남아있는 크기를 알려줌

 

 

📍TCP 3-way handshake

SYNbit(TCP connection 열었다는 의사)

📍TCP Congestion control

Network 상황에 따라 막히면(네트워크 상황이 안좋으면) 보내는 데이터 양을 줄여야 함

-> ack(receiverdml 피드백) 이 오는 속도에 따라 조절

  • Slow start
  • Additive increase
  • Multiplicative decrease