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