๐ ๊น์ํ ๋์ "๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์" ๊ฐ์ ๋ฃ๊ณ ์ ๋ฆฌ
๐์ธํฐ๋ท ํต์
- ์ธํฐ๋ท ์์์ ์ปดํจํฐ ๋์ ์ด๋ป๊ฒ ํต์ ํ๋์?
๋ฉ์์ง๋ฅผ ๋ณด๋ด์ผํ๋ ๋์์ด ๋๋ฌด ๋ฉ๋ฆฌ ์๋ค๋ฉด ์ธํฐ๋ท ๋ง์ ํตํด์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํด์ผ ํ๋ค.
ํ์ง๋ง ์ธํฐ๋ท ๋ง์ ๋งค์ฐ ๋ณต์กํด์ ์๋ง์ ๋ ธ๋๋ค์ด ์ฌ์ด์ ์กด์ฌํ์ฌ ์ด๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค.
๊ทธ๋ผ ๋๋์ฒด ์ด๋ค ๊ท์น์ผ๋ก ๋ชฉ์ ์ง๊น์ง ์์ ํ๊ฒ ์ ๋ฌ๋๋ ๊ฑธ๊น?
๐IP ( Internet Protocol )
ํ์ค์ธ๊ณ์์๋ ํธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฃผ์๊ฐ ์กด์ฌํ๋ฏ์ด ์ธํฐ๋ท ์์๋ ์ฃผ์๊ฐ ์กด์ฌํ๋ค. ๊ทธ๊ฒ ๋ฐ๋ก IP์ฃผ์๋ค.
- IP ์ญํ : ์ง์ ํ IP ์ฃผ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ. ์ด๋, ํจํท(Packet)์ด๋ผ๋ ํต์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค
* ํด๋ผ์ด์ธํธ ํจํท ์ ์ก
๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ค๋ ํด๋ผ์ด์ธํธ์์ ์ถ๋ฐ์ง์ IP์ ๋ชฉ์ ์ง์ IP ๋ฑ์ ์ ๋ณด๋ฅผ ๋ถ์ฌ ๋ฐ์ดํฐ๋ฅผ IP ํจํท์ผ๋ก ๋ง๋ค์ด ์ธํฐ๋ท์ ๋์ง๋ฉด ์ธํฐ๋ท ๋ง์ ๋ชจ๋ ์๋ฒ(๋ ธ๋)๋ค์ ์ด IP ๊ท์ฝ์ ๋ฐ๋ฅด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด ์ฃผ์๋ฅผ ์ฐพ์ ๊ณ์ ์๋ก ๋์ ธ์ฃผ๊ฒ ๋๋ค. ์ด๋ฐ ์์ผ๋ก ๋์ง๋ค๊ฐ ๊ฒฐ๊ตญ ์ต์ข ๋ชฉ์ ์ง์ ๋ค๋ค๋ฅด๊ฒ ๋๋ค.
* ์๋ฒ ํจํท ์ ์ก
์๋ฒ ์ธก๋ ๋์ผํ๋ค. ํ์ง๋ง ์ธํฐ๋ท ๋ง์ด ๋ณต์กํ๋ฏ๋ก ๋ฐ์ ๋ฃจํธ์ ๋ณด๋ธ ๋ฃจํธ๊ฐ ๋์ผํ์ง ์์ ์ ์๋ค.
ํ์ง๋ง ์ด๋ฐ IP ํ๋กํ ์ฝ์ ํ๊ณ๊ฐ ์๋ค.
- ๋น์ฐ๊ฒฐ์ฑ : ํจํท์ ๋ฐ์ ๋์์ด ์๊ฑฐ๋ ์๋น์ค ๋ถ๋ฅ์ด์ด๋ ํจํท์ ์ ์กํด๋ฒ๋ฆฐ๋ค.
- ๋น์ ๋ขฐ์ฑ : ์ค๊ฐ์ ํจํท์ด ์ฌ๋ผ์ ธ๋, ํจํท์ด ์์๋๋ก ๊ฐ์ง ์๋๋ผ๋ ํด๊ฒฐ์ด ์๋๋ค.
- ํ๋ก๊ทธ๋จ ๊ตฌ๋ถ ๋ถ๊ฐ๋ฅ : ๊ฐ์ IP๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ์์ ํ๋ก๊ทธ๋จ๋ผ๋ฆฌ ๊ตฌ๋ถํ์ง ๋ชปํ๋ค.
์ด๋ฐ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ฒ์ด TCP ์ด๋ค.
๐TCP , UDP
์ธํฐ๋ท ํ๋กํ ์ฝ ์คํ(TCP/IP Protocol)์ 4๊ณ์ธต์ ์๋์ ๊ฐ๋ค.
| ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต(Application Layer) | HTTP, FTP, telnet, DHCP, TFTP, SMTP, DNS, SNMP ๋ฑ |
| ์ ์ก ๊ณ์ธต (Transfer Layer) | TCP, UDP |
| ์ธํฐ๋ท ๊ณ์ธต (Internet Layer) | IP, ARP, RARP, ICMP |
| ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ณ์ธต (Network Interface Layer ๋๋ Network Access Layer) |
TCP, UDP๋ IP ์์์ IP ๊ธฐ๋ฅ์ ๋ณด์ํ๋ค.
๋ฉ์ธ์ง๊ฐ ์ ๋ฌ๋๋ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.

1. ํ๋ก๊ทธ๋จ์ด Hello, world! ๋ฉ์์ง ์์ฑํ๋ฉด
2. SOCKET ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด OS ๊ณ์ธต์ผ๋ก ์ ๋ฌ
3. ๋ฉ์์ง ์ ๋ณด์ TCP ์ ๋ณด ์์ด๋ค(TCP ์ธ๊ทธ๋จผํธ). ๊ทธ๋ฆฌ๊ณ IP๊ณ์ธต์ผ๋ก ๋ณด๋ด๋ฉด
4. TCP ์ธ๊ทธ๋จผํธ์ IP์ ๊ด๋ จํ ๋ฐ์ดํฐ๋ฅผ ์์ IP ํจํท์ผ๋ก ์์ฑ
5. ๊ทธ๋ฆฌ๊ณ ๋์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด LAN์นด๋๋ก ๋๊ฐ๋ ๋ฐ, Ethernet Frame(์ด๋๋ท ํ๋ ์ / ๋ฌผ๋ฆฌ์ ์ ๋ณด ํฌํจ)์ด ์ต์ข ์ ์ผ๋ก ์์์ ธ ๋๊ฐ๊ฒ ๋๋ค.
- ํจํท (Packet) ์ด๋? Package + Bucket
- IP ํจํท ์ ๋ณด
์ถ๋ฐ์ง IP, ๋ชฉ์ ์ง IP, ๋ฑ
- TCP ์ธ๊ทธ๋จผํธ ์ ๋ณด
์ถ๋ฐ์ง PORT, ๋ชฉ์ ์ง PORT, ์ ์ก ์ ์ด, ์์, ๊ฒ์ฆ ์ ๋ณด ๋ฑ
* TCP (์ ์ก ์ ์ด ํ๋กํ ์ฝ / Transmission Control Protocol)
- ์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ๋ก ํ์ฌ ๋๋ถ๋ถ TCP ์ฌ์ฉ
- ์ฐ๊ฒฐ์งํฅ (์ฐ๊ฒฐ์ ๋จผ์ ) - TCP 3 way handshake (๊ฐ์์ฐ๊ฒฐ / ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ)
- ๋ฐ์ดํฐ ์ ๋ฌ์ด ๋ณด์ฅ (๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ์ด์ ๋ํ ์๋ต์ ๋ณด๋)
- ์์ ๋ณด์ฅ (์ค๊ฐ์ ์๋ชป๋ณด๋ธ๋ค๋ฉด ์๋ชป๋ณด๋ธ ์์๋ถํฐ ์ฌ์ ์ก)
- TCP 3 way handshake
SYN (์ ์ ์์ฒญ) , ACK(์์ฒญ ์๋ฝ , ๋ง์ง๋ง ACK์์ ๋ฐ์ดํฐ๋ ์ ์ก ๊ฐ๋ฅ)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ SYNํจํท์ผ๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ SYN_SENT ์ํ๊ฐ ๋๋ค.
- ์๋ฒ๋ SYN ์์ฒญ์ ๋ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ SYN / ACK ํจํท์ ๋ณด๋ด๊ณ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ SYN_RECEIVED ์ํ๋ก ๊ธฐ๋ค๋ฆฐ๋ค.
- ๋ง์ง๋ง์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก๋ถํฐ ์๋ต์ ๋ฐ์ ACK ํจํท์ ๋ณด๋ด๋ฉด ์๋ฒ์ ์ํ๊ฐ ESTEBLISHED๊ฐ ๋์ด ์ฐ๊ฒฐ์ด ์๋ฆฝ๋๊ณ ๋ฐ์ดํฐ๊ฐ ์ค๊ณ ๊ฐ๊ฒ ๋๋ค.
- TCP ์์ ๋ณด์ฅ ๋ฐฉ๋ฒ
SEQ(Sequence), ACK(Acknowledge)๋ก ์์ ๋ฐ์ดํฐ ์์(offset)์ ํ์ธํ๊ณ ๋๋ฝ/์ง์ฐ ํจํท์ ๋ํ ์ฌ์ ์ก ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํด IP๋ฅผ ๋ณด์
• SEQ : ํ ์ฐ๊ฒฐ์์ ํ์ฌ๊น์ง ์ก์ ํ ๋ฐ์ดํฐ ์ด ํฌ๊ธฐ(๋ฐ์ดํธ ๋จ์)์ด์ ์์ ๋ฒํธ(Offset). ์์ ์ธก์์๋ ์ด๊ฑธ๋ณด๊ณ ์๋๋ฐฉ์ด ์ง๊ธ๊น์ง ๋์๊ฒ ๋ณด๋ธ ๋ฐ์ดํฐ ์ด๋์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ SEQ๋ฒํธ๋ ์ ์ฒด ๋ฐ์ดํฐ ์์ ์์น ๋ฒํธ์ ๊ฐ์ผ๋ฏ๋ก ๋ฐ์ดํฐ ์์๋ฅผ ๋ง์ถ๋๋ฐ ์ฌ์ฉ๋๋ค.
• ACK : ํ ์ฐ๊ฒฐ์์ ํ์ฌ๊น์ง ๋๋ฝ ์์ด ์์ ํ ๋ฐ์ดํฐ ์ด ํฌ๊ธฐ(๋ฐ์ดํธ๋จ์)์ด์ ๋ค์ ์์ ์ ์ํ๋ SEQ ๋ฒํธ, ์๋๋ฐฉ์ด ๋๋ฝ ์์ด ๋ฐ์ ๋ฐ์ดํฐ ์ด๋์ ์ ์ ์๋ค. ๊ณต์์ SEQ + (Data Size) ์ด๋ค. ๋๋ฝ ๋ฐ์ ์ ์ฌ์ ์กํด์ผ ํ๋ SEQ ๋ฒํธ๋ฅผ ์ ์ ์๋ค. ์ฌ์ ์ก์ ์๋๋ฐฉ์ด ๊ณ์(๋ง์ง๋ง)์ ๋ณด๋ด์ค๋ ACK ๋ฒํธ์ ์ผ์นํ๋ SEQ ๋ฒํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด ๋๋ค.
๊ณ์ ๋์ผํ ACK๊ฐ ์ค๋ ๊ฑธ ์ค๋ณต ACK๋ผ ํ๋๋ฐ, ์ก์ ์ธก์์ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ด๋ ์ค๋ณต ACK๊ฐ 3ํ ์ด์์ด๋ฉด ์ก์ ์ธก์์ ์ค๊ฐ์ ๋๋ฝ๋ ๊ฒ์ผ๋ก ํ๋จํ๊ฒ ๋๋๋ฐ ํด๋น ACK ๋ฒํธ์ ์ผ์นํ๋ SEQ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ ์กํ๊ฒ ๋๋ค. ์ฌ์ ์ก ๋ฐ์ ์ฌ๋ถ๋ ์ฅ๋น ๋ถ๋์ด๋ ๋คํธ์ํฌ ์ด์, ์ฅ๋น ์ค์ ์ด์ ๋ฑ์ ์ ์ถํ ์ ์๋ ๋จ์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฒดํฌ์์๊ฐ ๋๋ค.




* Number ๋ค์ (raw)์ธ๊ฑด ์ค์ ์ธ๊ทธ๋จผํธ ๋ฐ์ดํฐ ๋ฒํธ๊ณ (raw) ์๋ ๊ฑด ๋ณด๊ธฐ ํธํ๊ฒ ๊ฐ๊ณต๋ ๋ฒํธ
* Window๋ ์์ ์ธก์์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ ์
* flags๋ flags ๋ค์ ํ์๋ฆฌ ์์ฒ๋ผ ์ฌ๊ฒจ 16๋นํธ ํต์ผ๋ก ํํ
* Data Size๊ฐ 0์ด๋ผ๋ฉด ๊ฐ์ ACK์ ๋ฐ๋ณตํ๊ฒ ๋๋ค. ์ด ๊ฒ์ ๋ฐฉ์งํด์ ๋ฐ์ ํจํท์ Data Size๊ฐ 0์ด๋ผ๋ฉด Sequnce ๋ฒํธ์ 1์ ๋ํ ๊ฐ์ ACK์ผ๋ก ์ค์
* ๋จผ์ 3 way handshake



* ๋ฐ์ดํฐ ์ ์ก


์์ ํ๋ค๋ ํ์๋ก ๋ค์ Acknowledge Number๋ก ๋ค์ ์ฐจ๋ก๋ฅผ ์๋ ค์ค๋ค.
* ์๋๊ธ์ ์ ๊ทธ๋ฆผ์ด๋ ์ต๋ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ ์ด๊ณผํด์ ๋๋ก ๋๋๋ ๋ฐฉ์๋ ๋ณด์ฌ์ค
Understanding TCP Seq & Ack Numbers [Packet-by-Packet] | GoLinuxCloud
Reliability is one of TCPs strong feature. TCP ensures that all packets one end sends will be delivered to the other end, keeping track of which packets have
www.golinuxcloud.com
* UDP (User Datagram Protocol)
- ๊ธฐ๋ฅ์ด ๊ฑฐ์ ์์ด ํ์ ๋ํ์ง์ ๋น์
- TCP์ ์ฐ๊ฒฐ์งํฅ (3 way handshake) , ๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฅ, ์์ ๋ณด์ฅ ๋ชจ๋ ์๋จ
- ๊ทธ๋ฌ๋ ๋จ์ํ๊ณ ๋น ๋ฆ! Custom์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ ์ต์ ํ๊ฐ ๊ฐ๋ฅํจ!
- IP์ ๋ค๋ฅธ๊ฑด PORT์ ์ฒดํฌ์ฌ(๋ฐ์ดํฐ๊ฐ ๋ง๋์ง) ๊ธฐ๋ฅ ์ถ๊ฐ๋๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ถ๊ฐ ์์ ํ์ํ๋ค.
๐PORT
ํ๋์ IP์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ์๋ค๋ฉด ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ ํ๋ก๊ทธ๋จ์ ํ์ํ ๋ฐ์ดํฐ์ธ์ง ์ด๋ป๊ฒ ๊ตฌ๋ถํ ๊น?
๊ฐ์ IP๋ด์์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ด PORT๋ค. IP๋ ์ํํธ PORT๋ ๋ช๋ ๋ชํธ!
- 0 ~ 65535 ํ ๋น ๊ฐ๋ฅ ( 0 ~ 1023 ์ ์ ์๋ ค์ ธ์์ด ์ฌ์ฉ ๊ถ์ฅ X )
- FTP (20, 21) , TELNET (23) , HTTP (80) , HTTPS (443)
๐DNS ( Domain Name Server)
IP๋ ๊ธฐ์ตํ๊ธฐ๋ ์ด๋ ต๊ณ IP๊ฐ ๋ณํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ์ธํฐ๋ท ๋ง์ ์ ํ๋ฒํธ๋ถ
- ๋๋ฉ์ธ ๋ช ์ IP์ฃผ์๋ก ๋ณํ
* DNS ์ฌ์ฉ ๊ณผ์
1. ๋๋ฉ์ธ ๋ช ์ ๊ฒ์ google.com
2. DNS ์๋ฒ๊ฐ ์ด๋ฅผ ๋ฐ์ ํด๋น ๋๋ฉ์ธ์ ๋ง๋ IP์ฃผ์๋ฅผ ์๋ต
3. ํด๋ผ์ด์ธํธ๋ ์๋ต๋ฐ์ IP์ฃผ์๋ก ์ ์
'Computer Science > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| HTTP ์น ์ง์ - ๋ชจ๋ ๊ฒ์ด HTTP (0) | 2023.03.06 |
|---|---|
| HTTP ์น ์ง์ - URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (0) | 2023.03.06 |
| HTTPS (0) | 2023.01.14 |
| XML (0) | 2022.12.28 |
| OAuth 2.0 (2) | 2022.12.15 |
