[Computer Network] Chap9. Transport layer (2)

2023. 12. 19. 13:13ใ†ComputerScience/ComputerNetwork

 

 

 

 

 

9. Transport layer 2

* Socket programming

- IP + port number -> socket / ์ „์„ธ๊ณ„์—์„œ ์œ ๋‹ˆํฌํ•œ ์ปดํ“จํ„ฐ ์‹๋ณ„ + ์ปดํ“จํ„ฐ์—์„œ ์œ ๋‹ˆํฌํ•œ ํ”„๋กœ๊ทธ๋žจ ์‹๋ณ„

- ํŠน์ • ๋…ธ๋“œ์˜ ํŠน์ • ํ”„๋กœ๊ทธ๋žจ -> end point

 

- ์šด์˜์ฒด์ œ์—๊ฒŒ ํ—ˆ๋ฝ ๋ฐ›๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด OS๊ฐ€ ์ƒํƒœ ์ •๋ณด์™€ ๋ฉ”๋ชจ๋ฆฌ๋“ค ์ „๋ถ€ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ์†Œ์ผ“์ด๋‹ค.

- TCP/IP networks, ์–‘๋ฐฉํ–ฅ ํ†ต์‹ , local or ์ธํ„ฐ๋„ท์ด๋“  ์ƒ๊ด€ X, ์ „ํ†ต์ ์œผ๋กœ ์ด๋ฅผ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

+ 0.0.0.0์€ ๋ณธ์ธ์„ ์ง€์นญ, ํ•œ ์ปดํ“จํ„ฐ์—์„œ ๋‘ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์˜ ํ†ต์‹ ์€ IPC

 

- ๋Œ€ํ‘œ์ ์ธ TCP/UDP -> ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ architecture (ex. Web Server, Web Browser)

+ ๋งŒ์•ฝ์— 1:1 ์•„๋‹Œ ๊ตฌ์กฐ, ์นดํ†ก ์ฑ„ํŒ… ๊ตฌ์กฐ๋ผ๋ฉด? (TCP/UDP๋Š” 1:1๋ฐ–์— ์—†์Œ)

- ํด๋ผ์ด์–ธํŠธ1๊ณผ ์„œ๋ฒ„๋Š” 1:1๋กœ ์—ฐ๊ฒฐ, ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ TCP connection์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

 

* ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ ˆ์ฐจ

1. ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์˜ socket connect (์—ฐ๊ฒฐ ์„ค์ •), OS๊ฐ€ ๋žœ๋ค์œผ๋กœ ํฌํŠธ ๋„˜๋ฒ„ ์ •ํ•ด ์คŒ /

-> ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ›๊ธฐ๋งŒ ํ•จ -> ์ข…๋ฃŒ๋„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ, FIN์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ

- write, read ํ•œ ์ดํ›„, close

 

2. ์„œ๋ฒ„๋Š” ํ•ญ์ƒ ์‚ด์•„์žˆ์–ด์•ผ ํ•œ๋‹ค. Socket bind, listen, accept (์—ฐ๊ฒฐ ์„ค์ •) 

- read, write ์ดํ›„ close / ์„œ๋ฒ„๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ or ํ”„๋กœ์„ธ์Šค๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋ฐ›์Œ 

 

* Echo Server in Python 

1. ๋ณธ์ธ์˜ HOST์™€ PORT๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ socket์— bind –> ์ด ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐํ•œ๋‹ค. 

2. Listen – ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. / 3. accept / 4. ์ดํ›„ ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค. 

 

* Echo Server in Python 

1. ์„œ๋ฒ„์˜ HOST์™€ PORT๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ socket์— connect / 2. ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค. 

+ C๋กœ ์งœ๋ฉด ํ›จ์”ฌ ๊ธด ์ฝ”๋“œ -> ์ž…๋ ฅ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง์ ‘ ๋‹ค ์ค˜์•ผ ํ•จ 

 

 

 

 

 

 

https://www.engineersgarage.com/communication-between-server-clients-through-socket-programming-using-tcp-ip/

 

 

 

 

 

* ZeroMQ 

- ๋น„๋™๊ธฐ ๋ฉ”์„ธ์ง• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„์˜ ์ฃผ์ข… ๊ด€๊ณ„ X, ๋Œ€๋“ฑํ•œ ๊ด€๊ณ„ O

- ๋ฒ„ํด๋ฆฌ TCP ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ API๋ฅผ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ฆ / ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. 

- ์ „ํ†ต์ ์ธ 1:1 connection์˜ TCP์™€ ๋‹ฌ๋ฆฌ, ์—ฌ๋Ÿฌ ํŒจํ„ด๋“ค๋กœ many to many connection ๊ตฌํ˜„

- request reply / Publish subscribe / push pull – pipeline / exclusive pair 

 

ex1) Client & Worker 

– ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ž‘์—…์„ ๋ธŒ๋กœ์ปค๊ฐ€ DB์— ๊ฐ”๋‹ค๊ฐ€, ์ ํ•ฉํ•œ ์›Œ์ปค์—๊ฒŒ ์ž‘์—…์„ ์ „๋‹ฌํ•จ

- ๋ผ์šฐํ„ฐ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ๋‹ด๋‹น, ๋”œ๋Ÿฌ๊ฐ€ ์›Œ์ปค ๋‹ด๋‹น, ์ ์ ˆํžˆ ์›Œ์ปค์—๊ฒŒ ์ผ์„ ์ „๋‹ฌ, ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ

 

ex2) Publish & Subscriber 

- ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ๋ฉด Publisher๊ฐ€ ๋‹ค๋ฅธ subscriber๋“ค์—๊ฒŒ ๋ชจ๋‘ ๋ฟŒ๋ฆฐ๋‹ค.

- Publisher๋“ค / subscriber๋“ค์ด ์กด์žฌ / ์ค‘์•™์ง‘์ค‘ํ™” (๋„ค์ด๋ฒ„) : XSUB / XPUB

 

* RabbitMQ

– Centralized Message Queue – ์ค‘์•™์ง‘์ค‘ํ™”, ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ํ˜•ํƒœ

- ์ค‘์•™ ์ง‘์ค‘ํ™” ๋œ ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค, ๋Œ€๊ทœ๋ชจ์˜ consumer์—๊ฒŒ ๋ฐ€์–ด๋‚ด๋Š” ๊ฒƒ / ex) ์ฒœ ๋งŒ๋ช… ๊ฐ€์ž…์ž์—๊ฒŒ ์ŠคํŒธ ๋ฟŒ๋ฆฌ๊ธฐ

- ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š”๋ฐ, ํ•˜๋‚˜(์„œ๋ฒ„)๊ฐ€ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๋Œ€๋‹ค์ˆ˜๊ฐ€ ๋ฐ›๋Š” ๊ตฌ์กฐ

 

 

 

 

 

* Swift๋กœ Socket Programming  

์ง€๋‚œ ํ•™๊ธฐ ํ’€์Šคํƒ ๊ณผ์ œ๋กœ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. :)

 

https://github.com/SohyeonKim-dev/SwiftSocketServer

 

GitHub - SohyeonKim-dev/SwiftSocketServer: 2023-1 FSSN Server

2023-1 FSSN Server. Contribute to SohyeonKim-dev/SwiftSocketServer development by creating an account on GitHub.

github.com

 

 

 

https://github.com/SohyeonKim-dev/SwiftSocketClient

 

GitHub - SohyeonKim-dev/SwiftSocketClient: 2023-1 FSSN Client

2023-1 FSSN Client. Contribute to SohyeonKim-dev/SwiftSocketClient development by creating an account on GitHub.

github.com

 

 

 

 

 

 

'ComputerScience > ComputerNetwork' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Computer Network] Chap11. Cloud Computing  (0) 2023.12.19
[Computer Network] Chap10. HTTP & SIP  (1) 2023.12.19
[Computer Network] Chap8. Transport layer (1)  (0) 2023.12.19
[Computer Network] Chap7. Network Layer (2)  (1) 2023.11.13
[Computer Network] Chap6. Network Layer (1)  (1) 2023.11.13