๐ญ ๋ผ-์ดํ/๐ ํฐ-์์ด-์
์ค๋์ ๋ฐฐ์ #108
๊ฐ๋ฐํ๋ ํ์ด
2022. 1. 2. 03:47
2022.01.01 ์ค๋์ ๋ฐฐ์
์ค๋ ํ ์ผ.
- ๋คํธ์ํฌ ๊ณต๋ถ
- RxSwift ๊ณต๋ถ
- ๊ณผ์ ์งํ
์ค๋ ์๋ก ๋ฐ๊ฒฌํ ๊ฒ.
- HTTP, TCP, UDP๋ฅผ ๋นก์๊ฒ ์ ๋ฆฌํด๋ดค๋ค.
- TCP๋ ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ๋ณด์ฅํ๋ ์ฐ๊ฒฐ์งํฅํ ํ๋กํ ์ฝ, UDP๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง๋ ์์ง๋ง ๋น ๋ฅธ ์๋๋ฅผ ์ง์ํ๋ ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ
- ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ๋ณด์ฅํ๊ธฐ ์ํด์ ์ค๋ฅ์ ์ด, ํ๋ฆ์ ์ด, ํผ์ก์ ์ด๋ฅผ ์ ๊ณตํ๋ค. ๋๋ถ์ TCPํค๋๋ UDP๋ณด๋ค ํจ์ฌ ๋ ๋ฌด๊ฑฐ์
- ๋ ์ ๋ขฐ์ฑ ์๋ ํต์ ์ด๋ ๋ฐ์ดํฐ์ ์์๋ ๋ณด์ฅํด์ผํ๊ธฐ ๋๋ฌธ์ seq๊ณผ ack number๋ก ์ง์ํจ. seq๋ ์ก์ ํ ๋ฐ์ดํฐ์ ์ฒซ ๋ฒํธ. ack๋ ์๋๋ฐฉ์๊ฒ ๋ค์์ ๋ฐ์์ผํ ๋ฒํธ
- ํ๋ฆ์ ์ด๋ stop and wait์ด๋ sliding window. stop and wait์ ๋ณด๋ธ ๋ฐ์ดํฐ์ ๋ํ ack์ด ์์ผ ๋ค์๊ฑธ ๋ณด๋ธ๋ค. ARQ๋ ๊ฐ์ด์ฐ๋ฉด ํ์์์ ์ด๋ด์ ๋ณด๋ธ ๋ฐ์ดํฐ์ ๋ํ ๋ค์ ์ํ์ค ๋ฒํธ๋ฅผ ๊ฐ์ง ACK์ ๋ชป๋ฐ์ผ๋ฉด ๋ค์ ๋ณด๋ธ๋ค.
- sliding window๋ ์ก์ ์, ์์ ์ ์๋์ฐ๋ฅผ ์ ํด๋๊ณ ํ๋ฒ์ ์๋์ฐ์ ํฌํจ๋ ํจํท๋ค์ ๋ชจ๋ ๋ณด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ค๋ค์ ๋ํ ACK์ด ์ฌ ๋๋ง๋ค ์๋์ฐ๋ฅผ ์์ผ๋ก ์ฌ๋ผ์ด๋ฉ์ํด
- ๊ตฌ์ฒด์ ์ธ sliding window ๊ธฐ๋ฒ์ GBN์ด๋ SR์ด ์๋ค. GBN์ ์๊ธฐ๊ฐ ๋ฐ์ ๋ฐ์ดํฐ์ ๋ํ ACK์ ๋ณด๋. ๊ทผ๋ฐ ์์์ ๋ง๊ฒ ๋ชป๋ฐ์ผ๋ฉด ๊ทธ ๋ท ์์์ ๋ํ ํจํท์ ๋ฒ๋ฆฌ๊ณ ์๊ธฐ๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ ํจํท์ ๋ํ ACK๋ง ๊ณ์ ๋ณด๋ธ๋ค. ์ด๋ฌ๋ค๊ฐ ํ์์์์ด๋๋ฉด ์๋์ฐ ์์ ์๋ ๋ชจ๋ ํจํท์ ๋ค์ ์ ์กํจ
- SR์ GBN์ด ํจํท ์ ์ฒด๋ฅผ ๋ค์ ๋ณด๋ด๋ ์ค๋ฒํค๋๊ฐ ์์ผ๋๊น ์ด๊ฑธ ํด๊ฒฐํด๋ณด๋ ค๊ณ ์์ ์ ์ชฝ์ ๋ฒํผ๋ฅผ ๋๊ณ ํจํท์ด ์ฌ๋๋ง๋ค ์ ์ฅํ๋ค๊ฐ ์์๊ฐ ๋ค ๋ง์ผ๋ฉด ์์ ๊ณ์ธต์ผ๋ก ๋ณด๋ด๊ณ ์๋์ฐ๋ฅผ ์ด๋์ํด. ์ด๋ฌ๋ฉด ํ์์์์ด ๋๋ ์ก์ ์๋ ์๊ธฐ๊ฐ ACK์ ๋ชป๋ฐ์ ํจํท๋ง ๋ค์ ๋ณด๋ด๋ฉด ๋จ.
- ํผ์ก์ ์ด๋ AIMD, Slow Start. AIMD๋ ํผ์ก ์๋์ฐ ํฌ๊ธฐ๋ฅผ ์ ํ์ ์ผ๋ก ์ฌ๋ฆฌ๋ค๊ฐ ํ์์์์ด๋ 3 ACK DUP์ด ๋๋ฉด ์๋์ฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ฌ๋ฒ๋ฆฐ๋ค.
- Slow Start๋ ํผ์ก ์๋์ฐ๋ฅผ ์ง์์ ์ผ๋ก ์๋์ฐ์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ค๊ฐ ํผ์ก์ด ์๊ธฐ๋ฉด ๋ฐ๋ก 1๋ก ์ค์ฌ๋ฒ๋ฆผ
- ํํธ๋ ๋ฆฌ๋ ธ๋ AIMD๋ Slow Start๋ฅผ ์์ด์ฐ๋๊ฑฐ.
- ssthresh๋ฅผ ์ฐ๋๋ฐ slow start threshold์. ์ฌ๊ธฐ๊น์ง๋ slow start๋ก ์ง์์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ณ ์ด ์ดํ๋ถํฐ๋ ์ ํ์ ์ผ๋ก ๋๋ฆฌ๊ฒ ๋ค๋ ๋ป.
- ํํธ๋ Slow Start๋ก ์ฌ๋ฆฌ๋ค๊ฐ ssthresh ๋ง๋๋ฉด ์๋์ฐ ํฌ๊ธฐ๋ 1๋ก ์ค์ด๊ณ ssthresh๋ ์ด์ ์๋์ฐ์ ์ ๋ฐ์ผ๋ก ์ค์. ํผ์ก์ด ๋ฐ์ํ๋ ์๋์ฐ ํฌ๊ธฐ์์ ๋ฉ์ด์ง๊ธฐ ์ํ ๋ ธ๋ ฅ์
- ๋ฆฌ๋ ธ๋ ํํธ๋ ๋๊ฐ์๋ฐ ๋์ 3 ACK DUP์ด๋ ํ์์์์ ๋ํด ๋ค๋ฅธ ์ ์ฑ ์ ๊ฐ์ง. 3 ACK DUP์ผ ๋ฐ์ํ๋ฉด AIMD๋ก ์๋์ฐ๋ ๋ฐ์ผ๋ก ์ค์ด๊ณ ssthresh๋ ๊ฑฐ๊ธฐ์ ๋ง์ถค. ๊ทผ๋ฐ ํ์์์์ด ๋๋ฉด ssthresh๋ ๊ทธ๋๋ก ๋๊ณ ์๋์ฐ๋ง 1๋ก ์ค์. ์ ์ด๋ ๊ฒ ํ๋๋ฉด slow start ๋ฅผ ํ๊ฒ๋๋ฉด 1๋ถํฐ ์์ํ๋๊น ์๊ณ์ ๊น์ง ๋ค์ ๋๋ฌํ๋๋ฐ ์ค๋๊ฑธ๋ฆผ. ๊ทธ๋์ 3 ACK DUP์ ๋น์ ์์ ์ด๊ธด ํ์ง๋ง ํ์์์๋ณด๋ค๋ ๋ ํผ์กํ๋ค๊ณ ํ๋จํด์ ํ์ฌ ์๋์ฐ์ ์ ๋ฐ์์ ์์ํด์ ์ ํ์ ์ผ๋ก ์ฌ๋ฆฌ๊ณ , ํ์์์์ด ๋๋ฉด ๋ ธ๋ต์ด๋๊น 1๋ก ์ค์ฌ๋ฒ๋ฆฐ๋ค.
- HTTP/1.1์์๋ keep alive๊ฐ ๋ํดํธ๊ฐ ๋๊ณ ํ์ดํ๋ผ์ด๋์ ์ง์ํจ keep alive๋ ํ๋ฒ ํต์ ์ ์ฃผ๊ณ ๋ฐ์๋ค์์ ์ฐ๊ฒฐ์ ๋๋๊ฒ ์๋ฆฌใ ์ผ์ ์๊ฐ๋์ ์ด๋ ค๋๋๊ฑฐ๊ณ ํ์ดํ๋ผ์ด๋์ ์ ํ๋ ์์ฒญ์ ๋ํ ์๋ต์ด ์์ด๋ ์ฌ๋ฌ ์์ฒญ์ ๋ณด๋ผ ์ ์๋๊ฑฐ. HOL blocking ๋ฌธ์ ๊ฐ ์์
- HTTP/2.0์์๋ HTTP ๋ฉ์์ง๋ฅผ ํ๋ฌธ์ผ๋ก ์์ฐ๊ณ ํ๋ฒ ์ธ์ฝ๋ฉํด์ ๋ฐ์ด๋๋ฆฌ๋ก ์ด๋ค. ๊ทธ๋์ ๋ฒํธ๋ ๋ถ์ผ ์ ์๊ณ ๋๋ ์ ๋ณด๋ด๋ ๊ฒ๋ ๊ฐ๋ฅํจ. -> ์คํธ๋ฆผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค ์ ์์ด์ ๋ฉํฐํ๋ ์ฑ์ด ๊ฐ๋ฅํ๋ค๋ ์๋ฆฌ์. ๊ทธ๋ฆฌ๊ณ ์๋ฒ ํธ์ฌ๋ฅผ ์ง์ํด์ ๋ฐ๋ก ์์ฒญ์ ์ํด๋ html์ ์๋ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์์ ๊ฑ ๋ณด๋ด์ค.
- put์ด๋ patch ์ฐจ์ด๋ put์ ๋ฆฌ์์ค ์ ์ฒด๋ฅผ ์ ๋ฐ์ดํธ, patch๋ ์ผ๋ถ๋ง ์ ๋ฐ์ดํธ.
- https๋ ์๋ฒ๊ฐ ์๊ธฐ๊ฐ ๊ฐ์ง ์ธ์ฆ์์ ๊ฐ์ธํค๋ฅผ ๋ด์์ฃผ๊ณ ํด๋ผ๋ ์์๋ก ๋ง๋ ๋์นญํค๋ฅผ ์ธ์ฆ์์ ๊ฐ์ธํค๋ก ํ ๋ฒ ์ํธํํด์ ์์ชฝ์ด ๋ชจ๋ ๋์นญํค๋ฅผ ๊ฐ์ง๊ฒ ๋จ. ๊ทธ๋ผ ํด๋ผ๋ ๋์นญํค๋ก ๋ฐ์ดํฐ ์ํธํํ๋ฉด ์ด๊ฑด ์ธ์ฆ์๋ฅผ ๋ณด๋ด์ค ์๋ฒ์์๋ง ๋น๋ฐํค๋ก ๋ณตํํํ ์ ์์.
- uri ๊ฐ url๋ณด๋ค ์์ ๊ฐ๋ ์ด๊ณ url์ ์ฃผ์๋ง, uri๋ ์์์๋ณ์ํฌํจ. ์ฃผ์๊ฐ ๊ณง ์์์๋ณ์๋ฉด uri๋ url์ด ๋ ์ ์์ง๋ง, url์ด uri๊ฐ ๋ ์๋ ์์.
์ค๋ ๋๋ ๊ฒ.
- ์ฌ์ฌ ๊ธด์ฅ๋๋ค.. ์ด์ฌํ ์ค๋นํ์!
- ๋ชป์ฐธ๊ณ ๊ฒฐ๊ตญ ์ถ๊ตฌ๋ฅผ ๋ดค๋ค.. ์ํ๋ค๊ฐ ํ์๊ฐ์ ์ค์๋ก ๋ฉํ์ด ๋ง๋ ค์ ์ญ์ ํจ๋ฅผ ๋นํ๋ ๊ฑธ ๋ณด๋๊น ์ง์ง ์ด๋์๋ ๋ค ๋ฉํ์ธ์์ด๋ค ์ถ์๋ค.
- ๊ณผ์ ๋ฅผ ํ๋ค๋ณด๋๊น ์ฒ์ ์๊ฐํ๋ 2์๊ฐ๋ณด๋ค ๋ ํด๋ฒ๋ ธ๋ค.. ์ด์ ์ ํ๊ณผ ์ง์คํด์ผ๋๋๊น ์ข ๋ํ์. ์ข์ ํ๋ฆฌํฐ๋ ์๋์ฌ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋๋ ๋ง์ด ์์ด๋ฒ๋ฆฐ ๋ด์ฉ๋ค์ ๊ตฌํํ๋ฉด์ ์ ๊ฒํ ์ ์์ด์ ๋์์ด๋๋ ๊ฒ ๊ฐ๋ค.
๋ด์ผ์ ๊ณํ.
- ๊ณผ์ ์งํ
- ์ด์์ฒด์ ์ฑ ํ๊ธฐ, ๋คํธ์ํฌ๋ ์ฑ
- ํ๋ก์ ํธ ์ ๋ฆฌํ๊ฑฐ ๋ค์๋ณด๊ธฐ, RxSwift๋ ๊น๊ฒ ๋ณด๊ธฐ
- iOS ์ง๋ฌธ ์ ๋ฆฌ
์ค๋์ ๊ฐ์ฌ.
- ๊ณผ์ ๋ฅผ ๋ง์ด ์งํํ ์ ์๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํด์!