๋ฐ์ํ
- read() -> send() ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์
- read()๋ฅผ ์์ฒญํ๋ฉด ๋์คํฌ์ ์๋ ํ์ผ์ด ์ปค๋ Read Buffer์ ๋ณต์ฌ๋๋ค.
- Application์ด ์ปค๋๋จ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ Application Buffer์๋ ๋ณต์ฌ๋๋ค.
- send()๋ฅผ ์์ฒญํ๋ฉด ์ปค๋ Socet Buffer์ ํ์ผ์ด ๋ณต์ฌ๋๋ค.
- NIC ๋ฒํผ๋ก ๋ณต์ฌ๋๋ค.
- ์ปจํ ์คํธ ์ค์์นญ ๋ค๋ ๋ฐ์
- ์ฌ์ฉ์๊ฐ transferTo() ๋ฉ์๋๋ฅผ ์ด์ฉํด ํ์ผ ์ ์ก์ ์์ฒญํ๋ค.
- read()์ send() ํจ์๊ฐ ํ๋๋ก ํฉ์ณ์ง ํํ์ ์์คํ ์ฝ์ด๋ค.
- ๋์คํฌ์ ์๋ ํ์ผ์ด ์ปค๋ Read Buffer์ ๋ณต์ฌ๋๋ค.
- ์ปค๋ ๋ชจ๋์์ ์ ์ ๋ชจ๋๋ก ์ปจํ ์คํธ ์ค์์นญํ์ง ์๊ณ ๋ฐ๋ก Socket buffer๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ค.
- Socket buffer์ ๋ณต์ฌ๋ ๋ฐ์ดํฐ๋ฅผ DMA ์์ง์ ํตํด NIC buffer๋ก ๋ณต์ฌ๋์ด ์ง๋ค.
- ์ปจํ ์คํธ ์ค์์นญ ๋ฐ์ ํ์ ์ค์
์นดํ์นด์ Zero Copy
- ์นดํ์นด๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋, ์ดํ๋ฆฌ์ผ์ด์ ๋จ์ ์ฌ๋ฆฌ์ง ์๊ณ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์๊ณผ ๋์์ ๋คํธ์ํฌ๋ก ์ ์กํ๋ค.
๐ Reference
๋ฐ์ํ