πŸ“‚ λ„€νŠΈμ›Œν¬/성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리

    μ„œλ²„μ—μ„œ 연결을 λŠμ–΄ μ†ŒμΌ“μ„ λ§μ†Œν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]

    μ§€κΈˆκΉŒμ§€ 'μ†ŒμΌ“ μž‘μ„±, μ„œλ²„μ— 접속, 데이터 μ†‘μˆ˜μ‹ ' 과정을 μ•Œμ•„λ³΄μ•˜λ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ 'μ—°κ²° 끊기'λ₯Ό μ‚΄νŽ΄λ³΄λ©΄μ„œ 데이터 솑·μˆ˜μ‹ μ— κ΄€ν•œ 일련의 μ›€μ§μž„μ„ λ§ˆλ¬΄λ¦¬ν•΄λ³΄μž. πŸ“™ 1. 데이터 보내기λ₯Ό μ™„λ£Œν–ˆμ„ λ•Œ 연결을 λŠλŠ”λ‹€. 데이터 솑·μˆ˜μ‹ μ„ μ’…λ£Œν•˜λŠ” 것은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 솑신해야 ν•˜λŠ” 데이터λ₯Ό μ „λΆ€ 솑신 μ™„λ£Œν–ˆλ‹€κ³  νŒλ‹¨ν–ˆμ„ λ•Œλ‹€. 솑신을 μ™„λ£Œν•œ 츑이 μ—°κ²° 끊기 λ‹¨κ³„λ‘œ λ“€μ–΄κ°€λŠ”λ°, μ–΄λ””μ—μ„œ 데이터 솑·μˆ˜μ‹  λ™μž‘μ΄ λλ‚˜λŠ”μ§€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 따라 λ‹€λ₯΄λ‹€. μ„œλ²„ μΈ‘μ—μ„œ μ—°κ²° 끊기 단계에 λ“€μ–΄κ°€λŠ” κ²ƒμœΌλ‘œ κ°„μ£Όν•œλ‹€λ©΄ κ·Έ 과정은 μ•„λž˜μ™€ κ°™λ‹€. μ„œλ²„ 츑의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ¨Όμ € Socket 라이브러리의 closeλ₯Ό ν˜ΈμΆœν•œλ‹€. μ„œλ²„ 츑의 ν”„λ‘œν† μ½œ μŠ€νƒμ΄ TCP 헀더λ₯Ό λ§Œλ“€κ³ , 여기에 μ—°κ²° 끊기 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” FIN λΉ„νŠΈλ₯Ό 1둜 ..

    데이터λ₯Ό 솑·μˆ˜μ‹ ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]

    이전 글을 톡해 μ„œλ²„μ— μ ‘μ†ν•˜λŠ” 방법을 μ•Œμ•„λ³΄μ•˜λ‹€. μ΄λ²ˆμ—λŠ” μ„œλ²„μ— 접속을 μ™„λ£Œν•˜κ³  connectμ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ œμ–΄κ°€ λ˜λŒμ•„μ˜¨ ν›„μ˜ 데이터 솑·μˆ˜μ‹  λ™μž‘μ„ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž. πŸ“™ 1. ν”„λ‘œν† μ½œ μŠ€νƒμ— HTTP λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό λ„˜κΈ΄λ‹€ 첫 번째 λ™μž‘μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ writeλ₯Ό ν˜ΈμΆœν•˜μ—¬ 솑신 데이터λ₯Ό ν”„λ‘œν† μ½œ μŠ€νƒμ— κ±΄λ„€μ£ΌλŠ” 것이닀. ν”„λ‘œν† μ½œ μŠ€νƒμ€ 데이터λ₯Ό κ³§λ°”λ‘œ μ†‘μ‹ ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 일단 자체의 내뢀에 μžˆλŠ” μ†‘μ‹ μš© 버퍼 λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ €μž₯ν•˜κ³ , μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ‹€μŒ 데이터λ₯Ό 건넀주기λ₯Ό κΈ°λ‹€λ¦°λ‹€. λ§Œμ•½ 받은 데이터λ₯Ό κ³§λ°”λ‘œ 보낸닀면 μž‘μ€ νŒ¨ν‚·μ„ 많이 보낼 수 μžˆλ‹€. ν•˜μ§€λ§Œ, μ΄λ ‡κ²Œ ν•œλ‹€λ©΄ λ„€νŠΈμ›Œν¬μ˜ 이용 효율이 μ €ν•˜λ˜λ―€λ‘œ μ–΄λŠ 정도 데이터λ₯Ό μ €μž₯ν•˜κ³  λ‚˜μ„œ 솑·μˆ˜μ‹  λ™μž‘μ„ ν•œλ‹€. κ·Έλ ‡λ‹€λ©΄ μ–΄λŠ 정도 μ €μž₯..

    μ„œλ²„μ— μ ‘μ†ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]

    이전 글을 톡해 μ†ŒμΌ“μ„ μž‘μ„±ν•˜λŠ” 것을 μ•Œμ•„λ³΄μ•˜λ‹€. μ΄λ²ˆμ—λŠ” μž‘μ„±λœ μ†ŒμΌ“μ„ μ΄μš©ν•˜μ—¬ μ„œλ²„μ— μ ‘μ†ν•˜λŠ” 것을 μ•Œμ•„λ³΄μž. πŸ“™ 1. μ ‘μ†μ˜ 의미 μ„œλ²„μ— 접속을 ν•œλ‹€λŠ” 것은 톡신 μƒλŒ€μ™€ μ œμ–΄ 정보λ₯Ό μ£Όκ³ λ°›μ•„ μ†ŒμΌ“μ— ν•„μš”ν•œ 정보λ₯Ό κΈ°λ‘ν•˜κ³  데이터 솑·μˆ˜μ‹ μ΄ κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ§Œλ“œλŠ” 것을 μ˜λ―Έν•œλ‹€. μ œμ–΄ μ •λ³΄λž€ IP μ£Όμ†Œλ‚˜ 포트 λ²ˆν˜Έμ™€ 같이 데이터 솑·μˆ˜μ‹  λ™μž‘μ„ μ œμ–΄ν•˜κΈ° μœ„ν•œ 정보닀. λ˜ν•œ, 데이터 솑·μˆ˜μ‹  λ™μž‘μ„ μ‹€ν–‰ν•  λ•ŒλŠ” 솑·μˆ˜μ‹ ν•˜λŠ” 데이터λ₯Ό μΌμ‹œμ μœΌλ‘œ μ €μž₯ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­(=버퍼 λ©”λͺ¨λ¦¬)이 ν•„μš”ν•œλ°, 버퍼 λ©”λͺ¨λ¦¬μ˜ 확보도 접속을 ν•  λ•Œ μ‹€ν–‰λœλ‹€. πŸ“™ 2. 맨 μ•žλΆ€λΆ„μ— μ œμ–΄ 정보λ₯Ό κΈ°λ‘ν•œ 헀더λ₯Ό λ°°μΉ˜ν•œλ‹€. μ œμ–΄ μ •λ³΄λŠ” 'TCP 헀더에 κΈ°μž…λ˜λŠ” 정보'와 'μ†ŒμΌ“(ν”„λ‘œν† μ½œ μŠ€νƒμ˜ λ©”λͺ¨λ¦¬ μ˜μ—­)에 κΈ°λ‘λ˜λŠ” 정보'둜 λ‚˜λ‰œλ‹€..

    μ†ŒμΌ“μ„ μž‘μ„±ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]

    이전 μž₯(Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€.)μ—μ„œλŠ” μ•„λž˜μ˜ λ‚΄μš©μ„ μ‚΄νŽ΄λ³΄μ•˜λ‹€. URL을 ν•΄λ…ν•˜κ³ , HTTP λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό λ§Œλ“€κ³ , λ©”μ‹œμ§€λ₯Ό μ†‘μ‹ ν•˜λ„λ‘ OS에 μ˜λ’°ν•œλ‹€. 이번 μž₯(Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.)μ—μ„œλŠ” OS에 λ‚΄μž₯된 ν”„λ‘œν† μ½œ μŠ€νƒμ— μ–΄λ–»κ²Œ 솑신을 μ˜λ’°ν•˜λŠ”μ§€μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. 이전 μž₯μ—μ„œ μ•Œμ•„λ³Έ λ©”μ‹œμ§€ 솑신 과정을 ν”„λ‘œν† μ½œ μŠ€νƒ λ‚΄λΆ€μ˜ μ›€μ§μž„μ„ 톡해 μ‚΄νŽ΄λ³Ό 것이닀. 데이터 솑·μˆ˜μ‹  λ™μž‘μ€ μ•„λž˜μ˜ 4단계가 μžˆλ‹€. μ†ŒμΌ“ μž‘μ„± 단계 접속 단계 솑·μˆ˜μ‹  단계 μ—°κ²° 끊기 단계 이번 κΈ€μ—μ„œλŠ” 1단계인 'μ†ŒμΌ“ μž‘μ„± 단계'에 λŒ€ν•΄μ„œ μžμ„Ένžˆ μ•Œμ•„λ³΄μž. πŸ“™ 1. ν”„λ‘œν† μ½œ μŠ€νƒμ˜ λ‚΄λΆ€ ꡬ성 ν”„λ‘œν† μ½œ μŠ€νƒμ˜ λ‚΄λΆ€λŠ” κ·Έλ¦Όκ³Ό 같이 역할이 μ„œλ‘œ λ‹€λ₯Έ λͺ‡ λΆ€λΆ„μœΌλ‘œ λ‚˜λˆ„μ–΄μ Έ ..

    ν”„λ‘œν† μ½œ μŠ€νƒμ— λ©”μ‹œμ§€ 솑신을 μ˜λ’°ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]

    이전 과정을 톡해 IP μ£Όμ†Œλ₯Ό μ–»μ—ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” λ°μ΄ν„°μ˜ 솑신과 μˆ˜μ‹ μ΄ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. πŸ“™ 1. 데이터 솑·μˆ˜μ‹  λ™μž‘μ˜ κ°œμš” IP μ£Όμ†Œλ₯Ό μ΄μš©ν•˜μ—¬ μ•‘μ„ΈμŠ€ λŒ€μƒ μ›Ή μ„œλ²„μ— λ©”μ‹œμ§€λ₯Ό μ†‘μ‹ ν•˜κΈ° μœ„ν•΄ OS의 내뢀에 μžˆλŠ” ν”„λ‘œν† μ½œ μŠ€νƒμ— μ˜λ’°ν•œλ‹€. 데이터 솑·μˆ˜μ‹  λ™μž‘λ„ DNS μ„œλ²„μ— IP μ£Όμ†Œλ₯Ό μ‘°νšŒν•  λ•Œμ²˜λŸΌ Socket λΌμ΄λΈŒλŸ¬λ¦¬μ— λ“€μ–΄μžˆλŠ” ν”„λ‘œκ·Έλž¨ λΆ€ν’ˆμ„ μ΄μš©ν•˜λŠ”λ°, IP μ£Όμ†Œλ₯Ό μ‘°νšŒν•  λ•Œμ²˜λŸΌ ν”„λ‘œκ·Έλž¨ λΆ€ν’ˆμ„ ν•˜λ‚˜μ”© ν˜ΈμΆœν•˜κ³  λλ‚˜λŠ” 게 μ•„λ‹ˆλΌ 볡수의 λΆ€ν’ˆμ„ κ²°μ •λœ μˆœλ²ˆλŒ€λ‘œ ν˜ΈμΆœν•œλ‹€. Socket 라이브러리λ₯Ό μ΄μš©ν•œ 데이터 솑·μˆ˜μ‹  λ™μž‘μ€ μœ„μ™€ κ°™λ‹€. 데이터λ₯Ό 솑·μˆ˜μ‹ ν•˜λŠ” 컴퓨터 사이에 λ°μ΄ν„°μ˜ ν†΅λ‘œ(νŒŒμ΄ν”„) 같은 것이 있고 νŒŒμ΄ν”„μ˜ μ–‘ 끝에 λ°μ΄ν„°μ˜ μΆœμž…κ΅¬μΈ μ†ŒμΌ“μ΄ μžˆλ‹€. 그리고 μ•„..

    μ „ μ„Έκ³„μ˜ DNS μ„œλ²„κ°€ μ—°λŒ€ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]

    μ΄μ „κΉŒμ§€ 리쑸버와 DNS μ„œλ²„μ˜ 톡신 과정을 μ‚΄νŽ΄λ³΄μ•˜λ‹€. μ΄λ²ˆμ—λŠ” DNS μ„œλ²„μ˜ λ™μž‘μ„ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž. πŸ“™ 1. DNS μ„œλ²„μ˜ κΈ°λ³Έ λ™μž‘ DNS μ„œλ²„μ˜ κΈ°λ³Έ λ™μž‘μ€ 'ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 쑰회 λ©”μ‹œμ§€λ₯Ό λ°›κ³  쑰회의 λ‚΄μš©μ— μ‘λ‹΅ν•˜λŠ” ν˜•νƒœλ‘œ 정보λ₯Ό νšŒλ‹΅ν•˜λŠ” 일'이닀. 쑰회 λ©”μ‹œμ§€μ—λŠ” λ‹€μŒμ˜ 3가지 정보가 ν¬ν•¨λ˜μ–΄ μžˆλ‹€. 이름 μ„œλ²„λ‚˜ 메일 배솑 λͺ©μ μ§€(메일 μ£Όμ†Œμ—μ„œ @ λ’·λΆ€λΆ„μ˜ 이름)와 같은 이름 클래슀 인터넷 λ„€νŠΈμ›Œν¬λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 'IN'μ΄λΌλŠ” 클래슀 DNS의 ꡬ쑰λ₯Ό κ³ μ•ˆν–ˆμ„ λ•Œ 인터넷 이외에도 λ„€νŠΈμ›Œν¬μ—μ„œμ˜ μ΄μš©κΉŒμ§€ κ²€ν† ν•˜μ—¬ 이것을 μ‹λ³„ν•˜κΈ° μœ„ν•΄ ν΄λž˜μŠ€λΌλŠ” 정보λ₯Ό μ€€λΉ„ν–ˆλ‹€. ν•˜μ§€λ§Œ μ§€κΈˆμ€ 인터넷 μ΄μ™Έμ˜ λ„€νŠΈμ›Œν¬λŠ” μ†Œλ©Έλ˜μ–΄μ„œ 항상 INμ΄λΌλŠ” 값을 가진닀. νƒ€μž… 이름에 μ–΄λ–€ νƒ€μž…(μ’…λ₯˜)의 정보가 μ§€μ›λ˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€..

    μ›Ή μ„œλ²„μ˜ IPμ£Όμ†Œλ₯Ό DNS μ„œλ²„μ— μ‘°νšŒν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]

    HTTP의 λ©”μ‹œμ§€λ₯Ό λ§Œλ“€λ©΄ 이것을 OS에 μ˜λ’°ν•˜μ—¬ μ•‘μ„ΈμŠ€ λŒ€μƒμ˜ μ›Ή μ„œλ²„μ—κ²Œ μ†‘μ‹ ν•œλ‹€. λΈŒλΌμš°μ €λŠ” URL을 ν•΄λ…ν•˜κ±°λ‚˜ HTTP λ©”μ‹œμ§€λ₯Ό λ§Œλ“€μ§€λ§Œ, λ©”μ‹œμ§€λ₯Ό λ„€νŠΈμ›Œν¬μ— μ†‘μΆœν•˜λŠ” κΈ°λŠ₯이 μ—†κΈ° λ•Œλ¬Έμ— OS에 μ˜λ’°ν•˜μ—¬ μ†‘μ‹ ν•˜λŠ” 것이닀. OS에 솑신을 μ˜λ’°ν•  λ•ŒλŠ” 도메인λͺ…이 μ•„λ‹ˆλΌ IP μ£Όμ†Œλ‘œ λ©”μ‹œμ§€λ₯Ό 받을 μƒλŒ€λ₯Ό 지정해야 ν•œλ‹€. κ·Έλž˜μ„œ URL μ•ˆμ— μ“°μ—¬μžˆλŠ” μ„œλ²„μ˜ 도메인λͺ…μœΌλ‘œ IP μ£Όμ†Œλ₯Ό 쑰사해야 ν•œλ‹€. κ·Έλž˜μ„œ 이번 κΈ€μ—μ„œλŠ” 도메인λͺ…μ—μ„œ IP μ£Όμ†Œλ₯Ό μ‘°μ‚¬ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. πŸ“™ 1. IP μ£Όμ†Œμ˜ κΈ°λ³Έ 🚩 1. κΈ°λ³Έ λ™μž‘ μš°μ„ , TCP/IP κ°œλ…κ³Ό ν•¨κ»˜ IP μ£Όμ†Œμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. TCP/IPλŠ” μ„œλΈŒλ„·μ΄λΌλŠ” μž‘μ€ λ„€νŠΈμ›Œν¬λ₯Ό λΌμš°ν„°λ‘œ μ ‘μ†ν•˜μ—¬ 전체 λ„€νŠΈμ›Œν¬κ°€ λ§Œλ“€μ–΄μ§„λ‹€κ³  생각할 수 μžˆλ‹€. μ„œλΈŒλ„·μ΄λž€ ν—ˆλΈŒ..

    HTTP λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό μž‘μ„±ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]

    πŸ“™ 1. νƒν—˜ 여행은 URL μž…λ ₯λΆ€ν„° μ‹œμž‘ν•œλ‹€. λ„€νŠΈμ›Œν¬μ˜ μΆœλ°œμ μ€ URLλΆ€ν„° μ‹œμž‘ν•œλ‹€. λΈŒλΌμš°μ €λŠ” μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žμ§€λ§Œ, νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ/μ—…λ‘œλ“œν•˜λŠ” FTP의 ν΄λΌμ΄μ–ΈνŠΈ κΈ°λŠ₯μ΄λ‚˜ λ©”μΌμ˜ ν΄λΌμΈμ–ΈνŠΈ κΈ°λŠ₯도 가지고 μžˆλ‹€. κ·Έλž˜μ„œ μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•  λ•ŒλŠ” http:, FTP μ„œλ²„λΌλ©΄ ftp:λΌλŠ” μ‹μœΌλ‘œ μ—¬λŸ¬ μ’…λ₯˜μ˜ URL이 μžˆλ‹€. 즉, λΈŒλΌμš°μ €λŠ” λͺ‡ 개의 ν΄λΌμ΄μ–ΈνŠΈ κΈ°λŠ₯을 κ²ΈλΉ„ν•œ 볡합적인 ν΄λΌμ΄μ–ΈνŠΈ μ†Œν”„νŠΈμ›¨μ–΄λΌκ³  ν•  수 μžˆλ‹€. μ›Ή μ„œλ²„λ‚˜ FTP μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•˜λŠ” κ²½μš°μ—λŠ” μ„œλ²„μ˜ 도메인λͺ…μ΄λ‚˜ μ•‘μ„ΈμŠ€ ν•˜λŠ” 파일의 경둜 등을 URL에 ν¬ν•¨μ‹œν‚¨λ‹€. HTTP ν”„λ‘œν† μ½œλ‘œ μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•˜λŠ” 경우 http://{μ‚¬μš©μžλͺ…(μƒλž΅κ°€λŠ₯)}:{νŒ¨μŠ€μ›Œλ“œ(μƒλž΅κ°€λŠ₯)}@{μ›Ή μ„œλ²„μ˜ 도메인λͺ…}..