2023. 12. 19. 13:07ใComputerScience/ComputerNetwork
8. Transport layer 1
- 3๊ณ์ธต์ด ์ปดํจํฐ๋ ์ฐพ์๊ณ , 4๊ณ์ธต์ destination software๋ฅผ ์ฐพ๋ ๊ณผ์ (process to process)
- ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก packet์ ์ ๋ฌํ๊ธฐ ์ํ์ฌ
- ๊ฐ์ฅ ์ ๋ช ํ ๊ฒ์ ํด๋ผ์ด์ธํธ / ์๋ฒ ๊ตฌ์กฐ / ์ปดํจํฐ 2๋์ ํต์
- ๋ณธ์ธ์ด ์์ฒญํ ๋, ๋ด๊ฐ local host / ์๋ํธ์ด remote host
+ ์ปดํจํฐ ์์ ์ํํธ์จ์ด, process๋ฅผ ์ง์นญํ๊ฒ ๋จ -> local process & remote process
- Port number – ํธ์คํธ ์ด์์ฒด์ ์์์ ๋์๊ฐ๋ ๋ค์ํ ํ๋ก์ธ์ค, ํ๋ก๊ทธ๋จ์ ์๋ณํ๋ ๋ฒํธ (16 bit int)
+ ๋ง์ด ์ฌ์ฉํ๋ ํ์ค SW ํ๋ก๊ทธ๋จ์ ๋ฏธ๋ฆฌ 1024๊ฐ ์ง์ -> ์ด์ธ์ ๊ฐ์ ์์๋ก ์ด์์ฒด์ ๊ฐ ๋๋คํ๊ฒ ์ง์
- ์ปดํจํฐ๋ IP address + ๋ด๋ถ์ ํ๋ก์ธ์ค๋ port number
- destination๊ณผ source์ IP address & port number ์ด 4๊ฐ๋ง ์์ผ๋ฉด ์ ํํ ์ฐพ์๊ฐ ์ ์๋ค.
+ Socket Address = IP ์ฃผ์์ ํฌํธ ๋๋ฒ์ combination
- Connectionless Service (UDP) vs Connection-Oriented Service (TCP) -> ์ฐ๊ฒฐ ์ค์ ๋ฐ ํด์ ๊ธฐ๋ฐ
- Unreliable Service (UDP, fast ์ด๊ณ ์) / Reliable Service (TCP) – ์ ๋ขฐ์ฑ์ด ๋ณด์ฅ๋์ด์ผ ํ๋ค slow, complex
+ Datalink layer 2๊ณ์ธต์ด reliable, flow and error control ํ๋๋ฐ 4๊ณ์ธต์์๋ ์?
-> 3๊ณ์ธต network layer์ ์ธํฐ๋ท์ด unreliable (best effort delivery, ์ต์ ์ ๋คํ๊ณ ๋ฒ๋ฆฐ๋ค.) ์ ๋ขฐ์ฑ ๋ณด์ฅ X
-> ๊ฒฐ๊ตญ ์๋น์ค ๋ฐ๋ก ๋ฐ์ ๊น๋ฆฐ, 4๊ณ์ธต transport layer์์๋ reliability ๊ตฌํํด์ผ ํ๋ค. + ์๋ฌ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ
* User Datagram Protocol, UDP
- Connectionless, unreliable transport protocol / simple protocol using minimum of overhead
- ์ ๋ขฐ์ฑ์ด ์ค์ํ์ง ์์, ์์ ๋ฉ์ธ์ง๋ฅผ ์๋์๊ฒ ๋ณด๋ผ ๋ ์ฌ์ฉ
+ Well Known ports used with UDP (Echo, Daytime, BOOTPs ๋ฑ๋ฑ ๋ฏธ๋ฆฌ ์ ํด์ง ์ ๋ช ํ ํฌํธ ๋ฒํธ๋ค)
- Frame format (header + data) 8 byte ํค๋์ ๊ฐ๊ฐ 16 bit (2 byte)
1. Source Port / 2. Destination Port / 3. Total Length / 4. Checksum (ํค๋๊ฐ ๋ฐ์ด๋ฌ๋์ง ์ฌ๋ถ)
- UDP๋ connectionless service, ๋ฐ๋ผ์ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ datagram
-> no error control, no flow control
- Queuing at Client / Server site – ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ณด๋ค ํญ์ ๋จผ์ ์ด์์์ด์ผ ํ๋ค.
- ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค๊ฐ ์ด์๋ ๋, OS์๊ฒ ๋ณธ์ธ์ ๋๋ค Source ํฌํธ ๋ฒํธ๋ฅผ ๋ฐ๋๋ค.
- UDP ํค๋๋ฅผ ๋ํ ์ดํ, IP์๊ฒ ์ ๋ฌ / ํจํท ๋์ฐฉ -> destination port number ๋ณด๊ณ ์ ์ ํ ํ๋ก์ธ์ค์๊ฒ ์ ๋ฌ
- UDP ์ฌ์ฉ ์์ – ํ์ผ(FTP)๊ณผ ๊ฐ์ ๋๋ ๋ฐ์ดํฐ ์ ์ก์๋ ์ ํฉํ์ง X
- multicasting ๋ฐฉ์ก์ ๋ฟ๋ฆด ๋ / ๋ผ์ฐํฐ ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ (RIP – routing information protocol)
- ๋คํธ์ํฌ ์ฅ์น๋ค์ ๋ํ ์๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ (์์ด์ง๋ฉด ์ฌ์์ฒญํ๋ฉด ๋จ) SNMP ์ฌํ ๋คํธ์ํฌ ๊ด๋ฆฌ
* Transmission Control Protocol, TCP
- Connection Oriented Protocol, flow and error control, congestion control
- TCP Well known port number -> FTA (File Transfer Protocol – TCP๊ฐ ๋ ์ ํฉ), HTTP
* Stream Delivery Service / stream-oriented Protocol TCP / TCP๋ ํจํท์ ๋ณด๋ด๋ ๊ฒ์ด X (UDP์ ๋ค๋ฆ)
-> ๋ฐ์ดํธ๋ฅผ ๋ณด๋ด๋ virtual connection์ ๋ซ๋ ๊ฒ
- Circular queue ์ ํ ๋ฒํผ๋ฅผ ๋ง๋ ๋ค, ๋ฒํผ์ ๋จ์๋ ๋ฐ์ดํธ
1. ๋ณด๋๋๋ฐ ์์ง ์๋ต์ ๋ฐ์ง ๋ชปํจ / 2. ๋ณด๋ผ ์ ๋ค / 3. ๋น ๊ณณ – ๋ด๋ ค์ค๋ ๋ฐ์ดํฐ ์ ์ฅ
* Segments – TCP๊ฐ ์ฃผ๊ณ ๋ฐ๋ ๋จ์, ๊ฐ segment์ ํค๋๋ฅผ ๋ถ์ธ๋ค
- out of orders, lost, corrupted -> segment ๋จ์์ ์ฌ์ ์ก์ด ์ด๋ฃจ์ด์ง๋ค.
- stream of bytes -> segments / ์ธ๊ทธ๋จผํธ๋ค์ ๋ฐ์ดํธ๋ค์ ์ค์ด ๋๋ฅธ๋ค.
- Full Duplex Service - ์๋ฐฉํฅ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ , ๋ฐ์ ์ ์์ + Piggybacking – ACK์ ๋ฐ์ดํฐ ๊ฐ์ด ๋ณด๋ด๊ธฐ
- A์ B๊ฐ ์๋ก ์ฐ๊ฒฐ ์ค์ -> ๋ฒํผ๋ฅผ ๋ง๋ฆ / ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ดํ์๋ ๋ฒํผ ์ง์ฐ๊ธฐ (์ฐ๊ฒฐ ํด์ )
- TCP๋ ACK ๋ฉ์ปค๋์ฆ์ ํตํด ๋ฐ์ดํฐ๊ฐ ์ ๋์ฐฉํ๋์ง ์ฒดํฌํ๋ค.
- Byte number – TCP์ ๊ฐ์ฅ ํฐ ํน์ง, ๋ฐ์ดํธ ๋จ์๋ก ์ผ๋ค, ๋ฐ์ดํธ ์๋ ์๋ฌ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ์ ์ฌ์ฉ๋จ
- ์์ ๊ฐ์ random number ๋์ -> ์ด 6000 ๋ฐ์ดํธ๋ฅผ 1000 ๋ฐ์ดํธ ์ฉ ๋ณด๋ด๊ณ ์ถ์ด
- 1057 sequence number (init) -> 1057์ด ๋ด๊ฐ ๋ด๋ณด๋ด๋ ๋ค์ ์ธ๊ทธ๋จผํธ์ sequence number
- ๊ทธ ๋ค์ segment์ ๋ฒํธ๋ 3057, … 7057 / ์ง๊ธ ๋ณด๋ผ ์ธ๊ทธ๋จผํธ์ ์ฒซ๋ฒ์งธ ๋ฐ์ดํธ๊ฐ sequence ๋ฒํธ๊ฐ ๋จ
- Acknowledgment number -> ๋ด๊ฐ ๋ค์์ ๋ฐ์์ผ ํ ๋ฐ์ดํธ์ ์ซ์๋ฅผ ACK๋ก ๋ณด๋ธ๋ค.
+ TCP ํค๋์๋ ๋ง์ ๊ฐ์ด ์์ (Source, Destination Port number) Sequence num, ACK num, Window Size,
- Checksum, Urgent pointer, Options, Control field ๋ฑ๋ฑ
* Control Field (0 or 1๋ก ํ ๋นํธ๊ฐ ์ธํ ๋จ)
* TCP๋ connection oriented protocol -> ๊ฐ์์ ๊ธธ์ ๋ซ๋๋ค. (physical X, virtual connection)
* Connection Establish (์ฐ๊ฒฐ ์ค์ ๊ณผ์ )
1. SYN ๋นํธ๋ฅผ ์ผ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ segment ๋ณด๋ธ๋ค (์ฐ๊ฒฐ ์ค์ ์์ฒญ)
2. ์๋ฒ๊ฐ SYN๊ณผ ACK ๋นํธ๋ฅผ ์ผ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค (SYN์ ๋ํ ACK)
3. ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ์๋ฒ์๊ฒ ACK๋ฅผ ๋ณด๋ธ๋ค / ์ฆ, ์๋ก์๊ฒ SYN + ACK๋ฅผ ๋ณด๋ด์ด ์ฐ๊ฒฐ ์ค์ ํ๋ค.
-> ์ด๋ฅผ ์ ์ฉํ SYN attack ์๋ฒ๋ฅผ ๊ณต๊ฒฉํ ์ ์์ (๋งค์ฐ ๋ง์ SYN segment ์๋ฒ์๊ฒ ๋ณด๋ด๊ธฐ)
* Data Transfer (๋ฐ์ดํฐ ์ ์ก ๊ณผ์ )
1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ Seq 8001, 9001 ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค. (data – 8001์์ 10000๊น์ง)
2. ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฐ์๋ค๋ ์๋ฏธ๋ก 10001 (๋ค์ ๋ฒํธ)๋ฅผ ACK๋ก ๋ณด๋ธ๋ค + ๋ณธ์ธ์ seq 15001 (piggy)
3. ํด๋ผ์ด์ธํธ๋ seq๋ก 10000, ACK๋ก 17001์ ๋ณด๋ธ๋ค (์๋ฒ๋ก๋ถํฐ 15001 ~ 17000๊น์ง ๋ฐ์์ผ๋)
+ rwnd (receive window) – ์๋์ฐ ์ฌ์ด์ฆ๋ฅผ ๋ณด๋ธ๋ค -> ํ๋ฆ ์ ์ด flow control
+ Pushing Data – ์๋์ฐ๊ฐ ์ฑ์์ง ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์๋ ๊ฒ
+ Urgent Data – ํฌ์ธํฐ๋ฅผ ํ์ฉํ์ฌ, ์ธ๊ทธ๋จผํธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ฐ๋ก ์๋ก (์ฑ์๊ฒ) ์ฌ๋ ค์ค๋ค.
* Connection termination, ์ฐ๊ฒฐ ํด์
1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ FIN ๋นํธ๋ฅผ ์ผ์ ๋ณด๋ธ๋ค.
2. ์๋ฒ๊ฐ FIN + ACK๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค.
3. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ FIN์ ๋ํด ACK๋ฅผ ๋ณด๋ด๋ฉด ์ฐ๊ฒฐ ํด์ ์๋ฃ
* Half Close : ์๋ฒ๋ ์์ง ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ผ ๊ฒ์ด ๋จ์๋ค. FIN ์ธํ X, half close ์ํ (์๋ฒ๊ฐ ACK๋ง ๋ณด๋)
-> ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ง์ ๋ชป ๋ณด๋ด๋ ๊ฒ, ์๋ฒ๊ฐ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ๋ํ ACK๋ ๋ณด๋ผ ์ ์์
* Flow control – TCP์ ํ๋ฆ ์ ์ด
- ์๋ก ๋ฐ์ ์ ์๋ rwnd ์ฌ์ด์ฆ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. (๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์๋ก ๋ณด๋ด์ง X, ์๊ฐ์ด ๊ฑธ๋ฆผ)
- ํด๋ผ์ด์ธํธ: ACK๊ฐ ์ ์ฌ์ ์ก์ด ํ์ ์์ด์ง๋ฉด ๋น์ฐ๊ณ , ์๋กญ๊ฒ ๋์ด๋ rwnd ์ฌ์ด์ฆ ๋ณด๋ด๊ธฐ
- ์๋ฒ: ์ฒ๋ฆฌํ ์ดํ, ์๋ก ๋์ด๋ ์์ ๋ฒํผ ์ฌ์ด์ฆ (rwnd ์ฌ์ด์ฆ) ๋ณด๋ด๊ธฐ
* TCP์ ์ ์์ ์ธ ๋์
- ๋ฐ๋ก ์๋ต X, ํ์ด๋จธ๊ฐ ํฐ์ง ์ดํ ACK ๋๊ฐ + ์ฌ๋ฌ ์๋ต๋ค์ ๋ชจ์์, 7001์ ACK๋ก ๋ณด๋, ACK Delaying
- ๋ฉ์ธ์ง ๋ฐ๋ ์กฑ์กฑ ์๋ต์ ๋ณด๋ด๋ ๊ฒ์ ๋นํจ์จ (ํต์ ๋งํฌ ํจ์จ)
- but ๋๋์ ๋ฐ์ดํฐ ๋ณด๋ผ ๋, or ๊ธด๊ธํ ๋ฉ์ธ์ง ๋ณด๋ผ ๋์๋ ํต์ ํจ์จ ๋จ์ด์ง
* Lost segment (๋ฐ์ดํฐ๊ฐ ์ค๊ฐ์ ๋ ์๊ฐ ๊ฒ)
- ๊ธฐ๋ณธ์ ์ผ๋ก selective repeat ํ์ฉ (ํ์ํ ๊ฒ๋ง ์ฌ์ ์ก ์์ฒญ)
- ์๊ฐ ์์ ACK ๋ฐ์ง ๋ชปํ๋ฉด, ์ฌ์ ์ก ํ์ด๋จธ๊ฐ ํฐ์ง -> ์๋ฒ๊ฐ ๋ค ๋ํด์ new ACK๋ฅผ ๋ฐ์ผ๋ฉด ์ฌ์ ์ก ์๋ฃ
+ Fast retransmission (๋น ๋ฅธ ์ฌ์ ์ก) – 3๋ฒ ์ฐ์ ์ ์ค๋ ACK๊ฐ ์ค๋ฉด ํ์ด๋จธ ํฐ์ง๊ธฐ ์ ์ ์ฌ์ ์ก
* Lost acknowledgement (ACK๊ฐ ์ค๊ฐ์ ๋ ์๊ฐ ๊ฒ)
- ์๋ฒ๊ฐ ๋ณด๋ธ 500 ACK๊ฐ ์ค๊ฐ์ ๋ ์๊ฐ๋๋ผ๋, 500๋ถํฐ 900๊น์ง ๊ปด ์๋ ACK๊ฐ ์ค๋ฉด ์ ํ ์๊ด X
- ACK๊ฐ ์ค์ง ์์ ์ฌ์ ์ก ํ์ด๋จธ๊ฐ ํฐ์ง๊ฒ ๋๋ฉด, ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ฌ์ ์ก์ด ์ด๋ฃจ์ด์ง
+ TCP์ ํน์ง – Slow start, exponential increase (1)
- ํ๋ฒ์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ๋ถํ๊ฐ ์๊ธธ ์ ์์ / ์ค๊ฐ์ ๊ฑฐ์น๋ ๋คํธ์ํฌ์ ์ํฉ์ ์ ์ง ๋ชปํ๋๊น
- TCP๋ ์ฒ์์ ํ๋์ segment๋ง ๋ณด๋ผ ์ ์์ -> congestion window (ACK๊ฐ ์ฌ ๋ ๊น์ง) cwnd๊ฐ 1๋ก ์์
- ACK๋ฅผ ๋ฐ์ -> cwnd 2๋ฐฐ (๋ฐ๋ผ์ 2๊ฐ ๋ณด๋ผ ์ ์์) / rwnd์ ํ๊ณ ๋ด๋ถ์์, cwnd ์ ์ฉ / 1 2 4 8 16 …
(2) Congestion avoidance, additive increase
- 2๋ฐฐ๋ก ์ฆ๊ฐ X, linearํ๊ฒ congestion window๊ฐ 1์ฉ ์ฆ๊ฐ
ex) Taho TCP
- ์ฒ์์ 1, 2, 4, 8 ์ง์ ์ฆ๊ฐ -> ์๋ฌ ๋ฐ์ -> ๋ค์ 1๋ก ๊ฝ + 8/2 4๊ฐ ์ง์ ์ฆ๊ฐ์ ํ๊ณ threshold
-> 1 2 4๊น์ง ์ฆ๊ฐํ๊ณ , ์ดํ๋ 1์ฉ ์ฆ๊ฐ -> ๊ทธ๋ฌ๋ค๊ฐ 12์์ ์๋ฌ ๋ฐ์ -> ๋ค์ 1๋ก ๊ฝ + 6๊น์ง ์ง์ ์ฆ๊ฐ
-> TCP์ ํฑ๋๋ฐํด, TCP๋ ์ฌ๋ผ๊ฐ๋ ๋ด๋ ค๊ฐ๋ค ์ฟต์พ / TCP ์ ์ก ์๋๋ฅผ ์ ์งํ ์ X, ํํ ๋จ์ดํธ๋ฆผ
'ComputerScience > ComputerNetwork' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Computer Network] Chap10. HTTP & SIP (1) | 2023.12.19 |
---|---|
[Computer Network] Chap9. Transport layer (2) (0) | 2023.12.19 |
[Computer Network] Chap7. Network Layer (2) (1) | 2023.11.13 |
[Computer Network] Chap6. Network Layer (1) (1) | 2023.11.13 |
[Computer Network] Chap4. MAC/DLC (1) | 2023.11.13 |