Β«   2025/04   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Recent Posts
04-12 20:35

Today
Total

Recent Comments
관리 메뉴

μ—°μ˜ 기둝 πŸͺ

ν”„λ‘œν† μ½œ μŠ€νƒκ³Ό LAN μ–΄λŒ‘ν„°μ˜ λ™μž‘ λ³Έλ¬Έ

Computer Science/컴퓨터 λ„€νŠΈμ›Œν¬

ν”„λ‘œν† μ½œ μŠ€νƒκ³Ό LAN μ–΄λŒ‘ν„°μ˜ λ™μž‘

kite707 2024. 10. 27. 23:31

μ•žμ„œ Socket λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œμ˜ Socket, Connect, Write, Read, Close λ™μž‘μ— λŒ€ν•΄ μ‚΄νŽ΄λ΄€λ‹€. μ΄λŸ¬ν•œ λ™μž‘λ“€μ„ λ’·λ‹¨μ—μ„œ ν”„λ‘œν† μ½œ μŠ€νƒκ³Ό LAN μ–΄λŒ‘ν„°κ°€ μ²˜λ¦¬ν•΄μ€€λ‹€. 그림으둜 보면 μ•„λž˜μ™€ κ°™λ‹€.

μ €λ²ˆμ—” Socket λΌμ΄λΈŒλŸ¬λ¦¬κΉŒμ§€ μ‚΄νŽ΄λ΄€μœΌλ‹ˆ ν”„λ‘œν† μ½œ μŠ€νƒ λ‚΄λΆ€λ₯Ό μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž. TCP와 UDPλŠ” μš©λ„μ— 따라 λ‹€λ₯΄κ²Œ μ‚¬μš©λœλ‹€. TCPλŠ” λΈŒλΌμš°μ €λ‚˜ 메일 λ“±μ˜ 일반적인 데이터 μ†‘μˆ˜μ‹ μ„ λ‹΄λ‹Ήν•˜κ³ , UDPλŠ” DNS μ„œλ²„μ— λŒ€ν•œ μ‘°νšŒμ™€ 같은 짧은 μ œμ–΄μš© 데이터 μ†‘μˆ˜μ‹ μ„ λ‹΄λ‹Ήν•œλ‹€. (μ˜μƒ 전솑에도 μ‚¬μš©λœλ‹€.)

μ•„λž˜μ— μžˆλŠ” IP 담당은 νŒ¨ν‚·μ˜ μ†‘μˆ˜μ‹ μ„ μ œμ–΄ν•˜λŠ” 뢀뢄이닀. 내뢀에 μžˆλŠ” ARP ν”„λ‘œν† μ½œμ€ IP μ£Όμ†Œμ— λŒ€μ‘ν•˜λŠ” μΈν„°λ„·μ˜ MAC μ£Όμ†Œλ₯Ό 쑰사할 λ•Œ, ICMPλŠ” νŒ¨ν‚· 운반 μ‹œ λ°œμƒν•˜λŠ” 였λ₯˜ 톡지 및 μ œμ–΄μš© λ©”μ‹œμ§€ 톡지에 μ‚¬μš©λœλ‹€.

IP λ‹΄λ‹Ή μ•„λž˜μ˜ LAN λ“œλΌμ΄λ²„λŠ” LAN μ–΄λŒ‘ν„°λ₯Ό μ œμ–΄ν•˜κΈ° μœ„ν•¨μ΄κ³ , LAN μ–΄λŒ‘ν„°λŠ” μ‹€μ œ μ†‘μˆ˜μ‹  λ™μž‘μ„ μ‹€ν–‰ν•œλ‹€.

 

Socket

socket이 호좜되면 ν”„λ‘œν† μ½œ μŠ€νƒμ€ μ†ŒμΌ“μ„ λ§Œλ“ λ‹€. μ†ŒμΌ“μ„ λ§Œλ“ λ‹€λŠ” 것은 μ†ŒμΌ“ ν•œ 개 λΆ„λŸ‰μ˜ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήν•˜λŠ” 것이닀. ν”„λ‘œν† μ½œ μŠ€νƒμ€ μ†ŒμΌ“μ„ λ§Œλ“  λ’€ μ†ŒμΌ“μ„ μ‹λ³„ν•˜λŠ” λ””μŠ€ν¬λ¦½ν„°λ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ°˜ν™˜ν•œλ‹€.

 

Connect

이후 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ Connectλ₯Ό ν˜ΈμΆœν•œλ‹€. 방금 받은 λ””μŠ€ν¬λ¦½ν„°μ™€ λͺ©μ μ§€(μ„œλ²„)의 IPμ£Όμ†Œ 및 포트번호λ₯Ό 인자둜 λ‹΄μ•„ λ„˜κΈ΄λ‹€. 그러면 ν”„λ‘œν† μ½œ μŠ€νƒμ˜ TCP λ‹΄λ‹Ή 뢀뢄은 λͺ©μ μ§€μ˜ TCP λΆ€λΆ„κ³Ό 톡신해 μ œμ–΄ 정보λ₯Ό μ£Όκ³ λ°›λŠ”λ‹€. 이 뢀뢄이 λ°”λ‘œ 자주 λ“€μ–΄μ™”λ˜ 3-way-handshakeκ°€ μ§„ν–‰λ˜λŠ” μ‹œμ μ΄λ‹€. ν•΄λ‹Ή 과정은 μ•„λž˜μ™€ κ°™λ‹€.

이 과정을 μ’€ 더 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ¨Όμ € TCP 헀더λ₯Ό λ§Œλ“ λ‹€. TCP ν—€λ”μ—λŠ” μˆ˜μ‹ μ²˜μ™€ μ†‘μ‹ μ²˜μ˜ ν¬νŠΈλ²ˆν˜Έκ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€. 그리고 컨트둀 λΉ„νŠΈ 쀑 SYN의 값을 1둜 λ§Œλ“ λ‹€. 이후 IP λ‹΄λ‹Ή 뢀뢄이 νŒ¨ν‚·μ„ μ„œλ²„λ‘œ 보내주고 μ„œλ²„μ˜ TCP λ‹΄λ‹Ή 뢀뢄이 TCP 헀더λ₯Ό 쑰사해 λͺ©μ μ§€ ν¬νŠΈλ²ˆν˜Έμ— ν•΄λ‹Ήν•˜λŠ” μ†ŒμΌ“μ„ μ°Ύμ•„ ν•„μš”ν•œ 정보λ₯Ό κΈ°λ‘ν•œλ‹€.

좜처: http://www.ktword.co.kr/test/view/view.php?m_temp1=1889&id=1103

Write

접속이 μ™„λ£Œλ˜λ©΄ Write λ™μž‘μ΄ μ§„ν–‰λœλ‹€. 이 과정은 보낼 데이터λ₯Ό ν”„λ‘œν† μ½œ μŠ€νƒμ— μ „λ‹¬ν•˜κ³ , ν”„λ‘œν† μ½œ μŠ€νƒμ΄ λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜λŠ” 과정이닀. μ€‘μš”ν•œ 점은 ν”„λ‘œν† μ½œ μŠ€νƒμ€ 받은 데이터λ₯Ό λ°”λ‘œ λ³΄λ‚΄λŠ” 것이 μ•„λ‹ˆλΌ μ†‘μ‹ μš© 버퍼 λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ €μž₯ν–ˆλ‹€κ°€ λ³΄λ‚Έλ‹€λŠ” 것이닀.

μ™œλƒν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 따라 데이터 솑신 의뒰λ₯Ό ν•œλ²ˆμ— ν•˜λŠ” κ²½μš°λ„ 있고, 1λ°”μ΄νŠΈμ”©, 1ν–‰μ”© μ˜λ’°ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. μž‘μ€ νŒ¨ν‚·μ„ μ—¬λŸ¬λ²ˆ λ³΄λ‚΄λŠ” λΉ„νš¨μœ¨μ μΈ 과정을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ 버퍼에 λͺ¨μ•˜λ‹€κ°€ λ³΄λ‚΄λŠ” 것이닀.

μ΄λ•Œ μ–Όλ§ŒνΌ λͺ¨μ€ λ’€ 보낼 것인지에 λŒ€ν•΄ κ²°μ •ν•˜λŠ” 과정을 더 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž. 이λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” MTU와 MSSκ°€ 무엇인지 μ•Œμ•„μ•Ό ν•œλ‹€.

MTU : ν•œ νŒ¨ν‚·μœΌλ‘œ μš΄λ°˜ν•  수 μžˆλŠ” 디지털 λ°μ΄ν„°μ˜ μ΅œλŒ€ 길이. μ΄λ”λ„·μ—μ„œλŠ” 보톡 1500λ°”μ΄νŠΈ.
MSS : ν•œ νŒ¨ν‚·μœΌλ‘œ μš΄λ°˜ν•  수 μžˆλŠ” λ°μ΄ν„°μ˜ μ΅œλŒ€ 길이.

좜처: https://www.cisco.com/c/ko_kr/support/docs/ip/transmission-control-protocol-tcp/200932-Ethernet-MTU-and-TCP-MSS-Adjustment-Conc.html

ν”„λ‘œν† μ½œ μŠ€νƒμ€ MTUλ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›λŠ”λ‹€. μ—¬κΈ°μ„œ TCP, IP 헀더λ₯Ό μ œμ™Έν•˜μ—¬ MSS 길이λ₯Ό μ•Œ 수 μžˆλ‹€. 그렇기에 MSS와 μ΅œλŒ€ν•œ λΉ„μŠ·ν•œ κΈΈμ΄κΉŒμ§€ λͺ¨μ•˜λ‹€κ°€ 보내면 νŒ¨ν‚·μ΄ λ„ˆλ¬΄ 잘게 μͺΌκ°œμ§ˆ 걱정이 μ—†λ‹€.

또 λ‹€λ₯Έ 기쀀은 타이밍이닀. MSS만큼 λͺ¨μ΄μ§€ μ•Šμ•˜λ”λΌλ„ 일정 μ‹œκ°„ 전솑이 μ•ˆλ˜λ©΄ νŒ¨ν‚·μ„ 보낸닀. 이 μ‹œκ°„μ€ ν”„λ‘œν† μ½œ μŠ€νƒ λ‚΄λΆ€μ˜ 타이머λ₯Ό μ΄μš©ν•΄ μΈ‘μ •ν•œλ‹€.

ν”„λ‘œν† μ½œ μŠ€νƒμ€ MSS와 타이밍을 κ³ λ €ν•˜μ—¬ νŒ¨ν‚·μ„ 적절히 보낸닀.

MSS와 타이밍, 2가지 쑰건을 μ–΄λ–»κ²Œ μ‘°ν•©ν• μ§€λŠ” ν”„λ‘œν† μ½œ μŠ€νƒμ„ λ§Œλ“œλŠ” κ°œλ°œμžμ—κ²Œ λ‹¬λ €μžˆλ‹€. 그렇기에 OS의 λ²„μ „μ΄λ‚˜ μ’…λ₯˜μ— 따라 λ‹¬λΌμ§ˆ 수 μžˆλ‹€.

참고둜 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 데이터 솑신을 μ˜λ’°ν•  λ•Œ 버퍼에 λͺ¨μœΌμ§€ μ•Šκ³  λ°”λ‘œ 보내도둝 μ„€μ •ν•  μˆ˜λ„ μžˆλ‹€.

ν•˜μ§€λ§Œ 일반적인 μƒν™©μ—μ„œ ν”„λ‘œν† μ½œ μŠ€νƒμ€ 데이터λ₯Ό 솑신 버퍼에 λͺ¨μ€λ‹€. 이후 데이터 쑰각듀을 κΊΌλ‚΄ 솑,μˆ˜μ‹ μ²˜ 포트 번호λ₯Ό κΈ°λ‘ν•œ TCP헀더λ₯Ό μΆ”κ°€ν•œ λ’€ IP λ‹΄λ‹ΉμœΌλ‘œ λ„˜κ²¨μ€€λ‹€.

그럼 IP담당은 μ•„λž˜μ™€ 같은 ν˜•νƒœμ˜ λ‚΄μš©λ¬Όμ„ λ°›κ²Œ λœλ‹€. IP 담당은 거기에 MAC헀더와 IP헀더λ₯Ό 덧뢙인닀.

μ΄λ ‡κ²Œ λ§Œλ“  νŒ¨ν‚·μ„ LAN μ–΄λŒ‘ν„°μ— μ „λ‹¬ν•˜λŠ” 것이 IPλ‹΄λ‹Ή λΆ€λΆ„μ˜ 역할이닀. 이 νŒ¨ν‚·μ€ 0 1 λΉ„νŠΈκ°€ 이어진 ν˜•νƒœμΈλ° LAN μ–΄λŒ‘ν„°μ—μ„œ λΉ›μ΄λ‚˜ μ „κΈ° μ‹ ν˜Έλ‘œ λ°”λ€Œμ–΄ μΌ€μ΄λΈ”λ‘œ μ†‘μΆœλœλ‹€.

IP 담당뢀뢄은 MAC헀더와 IP헀더λ₯Ό μΆ”κ°€ν•˜κ³ , LAN μ–΄λŒ‘ν„°μ— μ „λ‹¬ν•œλ‹€.

IPν—€λ”μ—λŠ” 솑, μˆ˜μ‹ μ²˜μ˜ IP μ£Όμ†Œλ₯Ό λΉ„λ‘―ν•œ μ—¬λŸ¬κ°€μ§€ 값이 λ‹΄κΈ΄λ‹€. μˆ˜μ‹ μ²˜μ˜ IPμ£Όμ†ŒλŠ” μ•žμ„œ Connect과정을 톡해 TCP 담당이 IP 담당에 ν†΅μ§€ν•΄μ€¬μ—ˆλ‹€. μ†‘μ‹ μ²˜ IP μ£Όμ†ŒλŠ” μ–΄λ–€ LAN μ–΄λŒ‘ν„°λ₯Ό μ΄μš©ν•΄ νŒ¨ν‚·μ„ 보낼지 κ²°μ •ν•˜λŠ” 과정이닀. μ™œλƒν•˜λ©΄ IP μ£Όμ†ŒλŠ” LAN μ–΄λŒ‘ν„°λ§ˆλ‹€ ν• λ‹Ήλ˜κΈ° λ•Œλ¬Έμ΄λ‹€. 그리고 이 LAN μ–΄λŒ‘ν„°λŠ” νŒ¨ν‚·μ„ λͺ©μ μ§€κΉŒμ§€ μ΅œμ†Œ λΉ„μš©μœΌλ‘œ 보내쀄 수 μžˆλŠ” μ–΄λŒ‘ν„°κ°€ μ„ μ •λœλ‹€. μ΄λ•Œ μ‚¬μš©λ˜λŠ” λΌμš°νŒ… ν…Œμ΄λΈ”μ„ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž.

λ¨Όμ € λͺ©μ μ§€ IPκ°’κ³Ό Network Destination 값을 λΉ„κ΅ν•˜λ©° μΌμΉ˜ν•˜λŠ” 행을 μ°ΎλŠ”λ‹€. μΌμΉ˜ν•˜λŠ” 값이 μ—¬λŸ¬κ°œλ©΄ Metric(λΉ„μš©)이 μž‘μ€ 값을 μ„ νƒν•˜κ²Œ 되고, μΌμΉ˜ν•˜λŠ” 행이 μ—†μœΌλ©΄ κΈ°λ³Έ κ²Œμ΄νŠΈμ›¨μ΄λ₯Ό 톡해 νŒ¨ν‚·μ„ μ†‘μ‹ ν•˜κ²Œ λœλ‹€.

MACν—€λ”μ—λŠ” 솑, μˆ˜μ‹ μ²˜μ˜ MACμ£Όμ†Œκ°€ λ‹΄κΈ΄λ‹€. μ†‘μ‹ μ²˜ MAC μ£Όμ†ŒλŠ” μ•žμ„œ μ‚¬μš©ν•˜κΈ°λ‘œ κ²°μ •ν•œ LAN μ–΄λŒ‘ν„°μ˜ MAC μ£Όμ†Œλ₯Ό μ„€μ •ν•œλ‹€. μˆ˜μ‹ μž MAC μ£Όμ†ŒλŠ” ART(Address Resolution Protocol)ν”„λ‘œν† μ½œμ„ μ΄μš©γ…Ž μ‘°μ‚¬ν•œλ‹€. ARP ν”„λ‘œν† μ½œμ€ λΈŒλ‘œλ“œμΊμŠ€νŠΈ 방식을 μ‚¬μš©ν•˜λŠ”λ°, 같은 λ„€νŠΈμ›Œν¬μ— μ‘΄μž¬ν•˜λŠ” λŒ€μƒλ“€μ— λŒ€ν•΄ IPμ£Όμ†Œκ°€ μΌμΉ˜ν•˜λŠ” λŒ€μƒμ΄ μžˆλŠ”μ§€ λ¬»λŠ” νŒ¨ν‚·μ„ μ „λ‹¬ν•œλ‹€. ν•΄λ‹Ή IPλ₯Ό 가진 λŒ€μƒμ€ μžμ‹ μ˜ MAC μ£Όμ†Œλ‘œ μ‘λ‹΅ν•˜κ³ , λ‚˜λ¨Έμ§€λŠ” 이 μš”μ²­μ„ λ¬΄μ‹œν•œλ‹€.

참고둜 이 값듀은 ARP μΊμ‹œ κ°€μš© λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ €μž₯되고, ν†΅μƒμ μœΌλ‘œ 이 값듀은 λͺ‡ λΆ„ 정도가 μ§€λ‚˜λ©΄ μ‚­μ œλœλ‹€. 즉 νŠΉμ • IPλ₯Ό 가진 MAC μ£Όμ†Œλ₯Ό μ‘°νšŒν•  λ•ŒλŠ” ARP μΊμ‹œμ— κ·Έ 값이 μžˆλŠ”μ§€ μ°Ύκ³ , μ—†μœΌλ©΄ ARP의 μ‘°νšŒλ™μž‘μ„ μ‹€ν–‰ν•œλ‹€.

 

READ

μš”μ²­μ„ 보내면 μ„œλ²„λ‘œλΆ€ν„° 응닡이 λŒμ•„μ˜¬ 것이닀. LAN μ–΄λŒ‘ν„°κ°€ 이 응닡을 제일 λ¨Όμ € λ§ˆμ£Όν•˜κ²Œ λ˜λŠ”λ°, ν”„λ ˆμž„μ•°ν”Œ, ν”„λ ˆμž„ λ”œλ¦¬λ―Έν„°, FCS λ“±μ˜ 값을 μ΄μš©ν•΄ νŒ¨ν‚·μ— 였λ₯˜κ°€ μžˆλŠ”μ§€ κ²€μ¦ν•œλ‹€. (이 과정은 μΆ”ν›„ 닀루도둝 ν•˜κ² λ‹€.) 이후 MAC ν—€λ”μ˜ 값을 보고 μˆ˜μ‹ μ²˜μ˜ MAC μ£Όμ†Œμ™€ 자체의 MAC μ£Όμ†Œλ₯Ό λΉ„κ΅ν•˜κ³ , μžμ‹ μ—κ²Œ μ˜€λŠ” νŒ¨ν‚·μ΄λ©΄ 버퍼 λ©”λͺ¨λ¦¬μ— 이λ₯Ό μ €μž₯ν•œλ‹€. 이후 μΈν„°λŸ½νŠΈλ₯Ό 톡해 νŒ¨ν‚·μ„ μˆ˜μ‹ ν–ˆμŒμ„ μ•Œλ¦°λ‹€.

LAN λ“œλΌμ΄λ²„λŠ” ν”„λ‘œν† μ½œ μŠ€νƒμ— νŒ¨ν‚·μ„ λ„˜κΈ΄λ‹€. 그러면 IP λ‹΄λ‹Ή 뢀뢄은 IP 헀더λ₯Ό 쑰사해 포맷에 λ¬Έμ œκ°€ μžˆλŠ”μ§€ ν™•μΈν•˜κ³  μˆ˜μ‹ μ²˜ IP μ£Όμ†Œλ₯Ό ν™•μΈν•œλ‹€. λ§Œμ•½ μˆ˜μ‹ μ²˜ IP μ£Όμ†Œκ°€ μžμ‹ μ˜ μ£Όμ†Œμ™€ λ‹€λ₯΄λ©΄ 였λ₯˜κ°€ λ°œμƒν•œ κ²ƒμ΄λ‹ˆ ICMP(Internet Control Message Protocol)λ₯Ό μ΄μš©ν•΄ μƒλŒ€λ°©μ— 였λ₯˜λ₯Ό ν†΅μ§€ν•œλ‹€.

ICMPμ—λŠ” Destination Unreachable(νŒ¨ν‚·μ„ λͺ©μ μ§€μ— 전달할 수 μ—†μŒ), Source Quench(λΌμš°ν„°μ˜ 쀑계λŠ₯λ ₯ 초과), Time Exceeded(IP ν—€λ”μ˜ TTLκ°’ 초과)와 같은 λ‹€μ–‘ν•œ 상황에 λŒ€ν•œ λ©”μ‹œμ§€λ“€μ΄ μ •μ˜λ˜μ–΄ μžˆλ‹€.

λ§Œμ•½ μˆ˜μ‹ μ²˜ IP μ£Όμ†Œκ°€ μžμ‹ κ³Ό κ°™μœΌλ©΄ νŒ¨ν‚·μ„ μˆ˜μ‹ ν•œλ‹€. μ΄λ•Œ IP ν—€λ”μ˜ ν”Œλž˜κ·ΈλΌλŠ” ν•­λͺ©μ„ 보고 μˆ˜μ‹  νŒ¨ν‚·μ΄ λΆ„ν• λœ 것이면 IP λ‹΄λ‹Ή λΆ€λΆ„ λ‚΄λΆ€ λ©”λͺ¨λ¦¬μ— μž„μ‹œμ €μž₯ν•œλ‹€. 그리고 IP 헀더에 μžˆλŠ” ID 정보에 같은 값이 λ“€μ–΄κ°€μžˆλŠ” νŒ¨ν‚·λ“€μ„ λͺ¨μ•„ ν”„λ ˆκ·Έλ¨ΌνŠΈ μ˜€ν”„μ…‹μ— 따라 λΆ„ν• λœ νŒ¨ν‚·μ„ μ›λž˜λŒ€λ‘œ ν•©μΉœλ‹€. 이λ₯Ό λ¦¬μ–΄μ…ˆλΈ”λ§μ΄λΌκ³  ν•œλ‹€.

λ¦¬μ–΄μ…ˆλΈ”λ§κΉŒμ§€ λλ‚˜λ©΄ νŒ¨ν‚·μ€ TCP λ‹΄λ‹Ή λΆ€λΆ„μœΌλ‘œ λ„˜μ–΄κ°„λ‹€. TCP λΆ€λΆ„μ—μ„œλŠ” IP 헀더에 기둝된 μˆ˜μ‹ μ²˜ IP, μ†‘μ‹ μ²˜ IP 그리고 TCP 헀더에 μžˆλŠ” μˆ˜μ‹ μ²˜ 포트, μ†‘μ‹ μ²˜ 포트λ₯Ό 쑰사해 ν•΄λ‹Ήν•˜λŠ” μ†ŒμΌ“μ„ μ°ΎλŠ”λ‹€. 이후 데이터λ₯Ό μˆ˜μ‹  버퍼에 λ„£μ–΄μ€€λ‹€. λ§Œμ•½ 데이터 μ „μ†‘μš© νŒ¨ν‚·μ΄ μ•„λ‹ˆλΌ 접속, μ—°κ²° 끊기 같은 μ œμ–΄μš© νŒ¨ν‚·μ΄λΌλ©΄ μ œμ–΄ 정보λ₯Ό λ‹΅μž₯으둜 λ³΄λ‚΄κ±°λ‚˜ 접속 및 μ—°κ²°λŠκΈ° λ™μž‘μ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν†΅μ§€ν•œλ‹€.

 

Close

Socket라이브러리의 Closeκ°€ 호좜되면 μš°λ¦¬κ°€ 일반적으둜 μ•„λŠ” 4-way-handshakeκ°€ λ°œμƒν•œλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ—°κ²° λŠκΈ°μ— λ“€μ–΄κ°„λ‹€κ³  κ°€μ •ν•˜κ³  μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž. λ¨Όμ € ν΄λΌμ΄μ–ΈνŠΈμͺ½μ—μ„œ TCP 헀더λ₯Ό λ§Œλ“€κ³  컨트둀 λΉ„νŠΈ 쀑 FIN의 값을 1둜 μ„€μ •ν•˜μ—¬ μ„œλ²„λ‘œ 보낸닀. μ„œλ²„λŠ” FIN을 1둜 μ„€μ •ν•œ νŒ¨ν‚·μ„ λ°›μ•˜λ‹€λŠ” μ˜λ―Έμ—μ„œ ACK νŒ¨ν‚·μ„ λ°˜μ†‘ν•˜κ³ , μ„œλ²„ μͺ½μ—μ„œλ„ Closeκ°€ ν˜ΈμΆœλ˜μ–΄ FIN을 1둜 μ„€μ •ν•œ νŒ¨ν‚·μ„ λ°˜μ†‘ν•œλ‹€. 그러면 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλ„ 이λ₯Ό λ°›μ•„ ACK νŒ¨ν‚·μ„ λ°˜ν™˜ν•˜κ³ , μ„œλ²„κ°€ 이λ₯Ό λ°›μœΌλ©΄ μ„œλ²„λŠ” Closed μƒνƒœκ°€ λœλ‹€. ν΄μ•„μ΄μ–ΈνŠΈλŠ” λͺ‡ λΆ„ 정도 TIME_WAIT μƒνƒœλ‘œ λŒ€κΈ°ν•˜λ‹€κ°€ Closed둜 μ „ν™˜λœλ‹€. 이후 μ†ŒμΌ“μ„ λ§μ†Œν•œλ‹€.