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.. ์ด์ 1 2 ๋ค์