๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL (Today I Learned)/Network

(14)
[Network] HTTP/2 ์ง€์›์—ฌ๋ถ€ ํŒ๋‹จ C๋กœ ๊ตฌํ˜„ HTTP/2 check ํ•ด์ฃผ๋Š” C๋กœ ๊ตฌํ˜„ HTTP Request Header HTTP Status Code 1xx 100 Continue ์ง„ํ–‰ ์ค‘์ž„์„ ์˜๋ฏธํ•˜๋Š” ์‘๋‹ต์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ๊นŒ์ง€์˜ ์ง„ํ–‰์ƒํƒœ์— ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ„์†ํ•ด์„œ ์š”์ฒญ์„ ํ•˜๊ฑฐ๋‚˜ ์ด๋ฏธ ์š”์ฒญ์„ ์™„๋ฃŒํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ฌด์‹œํ•ด๋„ ๋˜๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. 101 Switching Protocol 101์€ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ๋ณด๋‚ธ ์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ ํ—ค๋”์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค. ์ด ์‘๋‹ต ์ฝ”๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ Upgrade ์š”์ฒญ ํ—ค๋”์— ๋Œ€ํ•œ ์‘๋‹ต์— ๋“ค์–ด๊ฐ€๋ฉฐ, ์„œ๋ฒ„์—์„œ ํ”„๋กœํ† ์ฝœ์„ ๋ณ€๊ฒฝํ•  ๊ฒƒ์ž„์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” Websocket ํ”„๋กœํ† ์ฝœ ์ „ํ™˜ ์‹œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 102 Processing(WebDAV) ์ด ์‘๋‹ต ์ฝ”๋“œ๋Š” ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜์˜€์œผ๋ฉฐ ์ด..
[TCP/IP] select() ์†Œ์ผ“ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ํ•จ์ˆ˜ select() ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™”๋ž€ ์—ฌ๋Ÿฌ ์ž…์ถœ๋ ฅ ๋Œ€์ƒ์ด ์žˆ์„ ๋•Œ ๊ทธ ๋Œ€์ƒ๋“ค์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ ์ž…์ถœ๋ ฅ์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ ๋ฐฉ๋ฒ•๊ณผ ๋‹ค๋ฅด๊ฒŒ ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์Šค, ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์—์„œ๋„ ๋™์ž‘ ์™„์ „ํžˆ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. select() ํ•จ์ˆ˜ ๋ฆฌ๋ˆ…์Šค๋Š” select() ํ•ฉ์ˆ˜๋กœ ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™”๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. select()๋Š” ์ง€์ •ํ•œ ๋ฒ”์œ„์˜ file discripter ์ค‘ FD_SET์œผ๋กœ 1๋กœ set ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” file discripter๋ฅผ ๋ฐ˜ํ™˜ ํŒŒ์ผ์— ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋ฉด 1, ์—†๋‹ค๋ฉด 0 set file discripter sele..
[TCP/IP] ๋ฌธ์ž์—ด ํ˜•์‹์˜ ๋„๋ฉ”์ธ -> 4๋ฐ”์ดํŠธ ๋„คํŠธ์›Œํฌ ๋ฐ”์ดํŠธ ์ˆœ์„œ๋กœ๋œ ์ด์ง„ ํ˜•์‹์˜ ์ฃผ์†Œ ๋ฌธ์ž์—ด ํ˜•์‹์˜ ๋„๋ฉ”์ธ -> 4๋ฐ”์ดํŠธ ๋„คํŠธ์›Œํฌ ๋ฐ”์ดํŠธ ์ˆœ์„œ๋กœ๋œ ์ด์ง„ ํ˜•์‹์˜ ์ฃผ์†Œ ํ•จ์ˆ˜ #include struct hostent * gethostbyname(const char *name); ๋ฐ˜ํ™˜ ๊ฐ’ ์„ฑ๊ณต ์‹œ : hostent ๊ตฌ์กฐ์ฒด ์ฃผ์†Œ ์‹คํŒจ ์‹œ : NULL์ธ์ž name : ๋„๋ฉ”์ธ ์ด๋ฆ„ ์ธ์ž name์ด ๊ฐ€๋ฅดํ‚ค๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ ๋„คํŠธ์›Œํฌ์ƒ์—์„œ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ตฌ์กฐ์ฒด hostent์— ๋„ฃ์–ด ์ค€๋‹ค. ํ•จ์ˆ˜ #include struct hostent * gethostnbyaddr(const char *addr, int len, int type); ๋ฐ˜ํ™˜ ๊ฐ’ ์„ฑ๊ณต ์‹œ : hostent ๊ตฌ์กฐ์ฒด ์ฃผ์†Œ ์‹คํŒจ ์‹œ : NULL์ธ์ž addr : 32๋น„ํŠธ ์ด์ง„ ๊ฐ’์œผ IP ์ฃผ์†Œ len : ์ฃผ์†Œ ๊ธธ์ด type : ์ฃผ์†Œ ..
[TCP/IP] ํฌํŠธ(Port) ํฌํŠธ(Port) ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ ๊ฐ„์— ์ด๋ฃจ์–ด์ง€๋Š” ์ž๋ฃŒ์˜ ๊ตํ™˜์€ ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์„œ๋น„์Šค ์š”์ฒญ๊ณผ ์„œ๋ฒ„์˜ ์‘๋Œ€ ์ฒ˜๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ์†Œ์ผ“์ด ์—ฐ๊ฒฐ๋œ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค. ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ 0~65535๊นŒ์ง€์˜ ํฌํŠธ๋ฅผ ๋‘๊ณ  ์žˆ๋‹ค. ์›น ์„œ๋ฒ„, ์ด๋ฉ”์ผ, FTP, ํ…”๋„ท(Telnet) ๋“ฑ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์–ด๋А ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋˜ ๊ฐ„์— ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•œ ํฌํŠธ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์›น ์„œ๋ฒ„๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ 80๋ฒˆ ํฌํŠธ์— ์—ฐ๊ฒฐํ•˜๋ฉด ์›น ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋œ๋‹ค. 'http://www.naver.com/index.html'์ฒ˜๋Ÿผ ํŠน์ • ํฌํŠธ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ 80๋ฒˆ ํฌํŠธ์— ์—ฐ๊ฒฐ๋˜๋Š” ์ด์œ ๋Š” ๊ธฐ๋ณธ(default) ์„ค์ •์ด๊ธฐ ๋•Œ๋ฌธ ๋งŒ์ผ ํ˜ธ์ŠคํŠธ A์—๋Š” ์›น์„œ๋ฒ„๊ฐ€ 80๋ฒˆ ํฌํŠธ์— ์—ฐ๊ฒฐ๋˜์–ด ์‹คํ–‰..
[TCP/IP] socketpair ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌํ˜„ - ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜ socketpair ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌํ˜„ - ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜ ์„œ๋กœ ํ†ต์‹ ํ•  ๋•Œ๋ฉด ๋‘ ๊ฐœ์˜ ์†Œ์ผ“์„ ์ƒ์„ฑํ•ด์„œ ์ž๋ฃŒ๋ฅผ ์†ก์ˆ˜์‹ ํ•œ๋‹ค. ์ด๋•Œ ๋‘ ๊ฐœ์˜ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด socketpair ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‘ ์†Œ์ผ“ ๊ฐ„์— ๋ณ„๋„์˜ ์—ฐ๊ฒฐ ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋‘ ๊ฐœ์˜ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ  ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๊นŒ์ง€ ํ•ด์ค€๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” read์™€ write ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์†Œ์ผ“์„ ํ†ตํ•ด ์ž๋ฃŒ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋ฉด ๋œ๋‹ค. ํ•จ์ˆ˜ #include #include int socketpair(int domain, int type, int protocol, int sd[2]); ๋ฐ˜ํ™˜๊ฐ’ ์„ฑ๊ณต ์‹œ : 0 ์‹คํŒจ ์‹œ : -1 ์ธ์ž domain : ์‚ฌ์šฉํ•  ํ”„๋กœํ† ์ฝœ ํŒจ๋ฐ€๋ฆฌ type : ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์—์„œ ์‚ฌ์šฉํ•  ์†Œ์ผ“ ์œ ํ˜• p..
[TCP/IP] ํŒŒ์ผ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ ์—ฐ๊ฒฐ ์š”์ฒญ : ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์‹œ๋„ํ•ด์„œ ์—ฐ๊ฒฐํ•œ๋‹ค. ls ์š”์ฒญ : ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์— ๋ฌธ์ž์—ด ls๋ฅผ ์ „์†กํ•ด์„œ ํŒŒ์ผ ๋ชฉ๋ก์„ ์š”์ฒญํ•œ๋‹ค. ๋ฌธ์ž์—ด(ํŒŒ์ผ๋ชฉ๋ก) ์ „์†ก : ls ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ฑ๋Ÿฌ์„œ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „์†กํ•œ๋‹ค. ํ™”๋ฉด ์ถœ๋ ฅ : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์ „์†ก๋ฐ›์€ ๋ฌธ์ž์—ด(ํŒŒ์ผ ๋ชฉ๋ก)์„ ์ž์‹ ์˜ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. ํŒŒ์ผ ๋ชฉ๋ก ์ฝ์–ด ๋‚ด๊ธฐ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ฝ์–ด ๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์šด์˜์ฒด์ œ๊ฐ€ ์ฑ„ํƒํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋‚˜ ์œ ๋‹‰์Šค ๊ณ„์—ด์˜ ๊ฒฝ์šฐ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํŠน์ˆ˜ ํŒŒ์ผ๋กœ, I-๋…ธ๋“œ ๋ฒˆํ˜ธ์™€ ํŒŒ์ผ๋ช…์˜ ์Œ์„ ๊ฐ–๋Š” ๊ตฌ์กฐ์ฒด์˜ ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ตฌ์กฐ์ฒด์—์„œ I-๋…ธ๋“œ ๋ฒˆํ˜ธ๋Š” I-๋…ธ๋“œ๋ฅผ ์ฐพ๋Š” Index๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ..
[TCP/IP] hello, world๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ ํ™•์žฅ hello, world๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ ํ™•์žฅ ์ด์ „์— ์ž‘์„ฑํ•œ hello, world๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ์— ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด ์šฐ์„  ๋ฌธ์ž์—ด print๋ผ๋Š” ๋ช…๋ น๊ณผ ๊ฐ™์€ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์ด ์ด ์š”์ฒญ์„ ๋ฐ›์•„์•ผ๋งŒ ๋ฌธ์ž์—ด ์ „์†ก์ด ๋˜๋„๋ก ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ•˜๊ณ  ์—ฐ๊ฒฐํ•œ๋‹ค. print ์š”์ฒญ : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด print๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „์†กํ•œ๋‹ค. ๋ฌธ์ž์—ด ์ „์†ก : print ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์ „ ์•ฝ์†๋Œ€๋กœ ๋ฌธ์ž์—ด hello, wolrd๋ฅผ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „์†กํ•œ๋‹ค. ํ™”๋ฉด ์ถœ๋ ฅ : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์ „์†ก๋ฐ›์€ ๋ฌธ์ž์—ด(hello, world)์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. hello_ext_..
[TCP/IP] hello, world๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ hello, world๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์„ฑ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์„œ๋น„์Šคํ•˜๋Š” ์„œ๋ฒ„ ์ธก ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด ๋„คํŠธ์›Œํฌ์‚ฌ์—ฅ์„œ ํ†ต์‹  ์ฑ„๋„์„ ํ†ตํ•ด ์„œ๋ฒ„์ธก์— ์—ฐ๊ฒฐ๋˜๋ฉด ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ์ฆ‰์‹œ ๋ฌธ์ž์—ด hello, world๋ฅผ ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ „์†ก ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์ „์†ก๋ฐ›์€ ๋ฌธ์ž์—ด์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. ์—ฐ๊ฒฐ์š”์ฒญ : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์†Œ์ผ“ API ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์— ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•œ๋‹ค. ๋ฌธ์ž์—ด ์ „์†ก : ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐ๋˜์ž๋งˆ์ž ๋ฌธ์ž์—ด hello, world๋ฅผ ํด๋ผ์ด์–ธํŠธ์ธก์— ์ „์†กํ•œ๋‹ค. ํ™”๋ฉด ์ถœ๋ ฅ : ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์ „์†ก๋ฐ›์€ ๋ฌธ์ž์—ด (helo, world)๋ฅผ ์ž์‹ ์˜ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. hello_ser..