TCP/IP
Transmission Control Protocol / Internet Protocol
λ μμ€ν μ¬μ΄μ λ°μ΄ν°κ° μμ μμ΄ μμ νκ² μ μ‘λλλ‘ νλ ν΅μ νλ‘ν μ½
- μ°κ²°ν ν΅μ , λ μ€ νλκ° μ°κ²°μ λμ λ κΉμ§ λ°μ΄ν° μ μ‘ κ°λ₯ , μ°κ²° μ μ§λ₯Ό μν΄ μμμ λ¬Άμ΄λμ΄μΌνλ λΆλ΄μ΄ μμ
- ν μ»΄ν¨ν°μμ λ³΄λΈ λ°μ΄ν°λ€μ λͺ©μ μ»΄ν¨ν°μ μμλλ‘ μμ©νλ‘κ·Έλ¨μκ² μ λ¬λλ€. μ λ ¬ ν νμλ μκ³ μμλλ‘ λ°κΈ°λ§ νλ©΄λλ€.
IP μ£Όμ
λ€νΈμν¬ μμμ μ μΌνκ² μλ³λ μ μλ λ€νΈμν¬ μ₯μΉμ μ£Όμ
- 4κ°μ μ«μκ° . μΌλ‘ μ°κ²°λλ€. 0~255 ( νλ°μ΄νΈλ‘ νν κ°λ₯)
- 32 IPv4 → 128 IPv6
- λ΄ μμ΄νΌ νμΈ νλ λ°©λ² : cmd > ipconfig λͺ λ Ή
TCP/IP ν¬νΈ
ν μ»΄ν¨ν°μμ μ¬λ¬ μννΈμ¨μ΄λ€μ ν΅μ μ΄ μΌμ΄λ μ μκ² ν¬νΈλ₯Ό λ§λ¬
- IP μ port λ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ μ°κ²°νκ³ λ°μ΄ν°λ₯Ό κ΅ννλ€.
- μ μλ €μ§ ν¬νΈ well-known-ports / 0~1023
μμΌ Socket
Socket λ μμ© νλ‘κ·Έλ¨ κ°μ ν΅μ μ°κ²° λλ¨ endpoint
- μμΌ ν΅μ μ ν΅μ νλ‘κ·Έλ¨μ μ½κ² μμ±ν μ μλλ‘ μ§μνλ κΈ°λ° κΈ°μ , λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κΈ°λ₯ μ΄κ΄
- μΌλ¨ μ°κ²° λλ©΄ μ€μ€λ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ TCP/IP μννΈμ¨μ΄ λͺ¨λ, μ§μ ν΅μ νμ§ μμλ μμΌμ μ΄μ©ν΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λλ€.
- μμΌλ§λ€ ν¬νΈκ° μκ³ ν¬νΈλ²νΈλ₯Ό ν΅ν΄ μλ νλ‘κ·Έλ¨μ μλ³ν¨
μμΌκ³Ό μλ² ν΄λΌμ΄μΈνΈ ν΅μ
μλ² or ν΄λΌμ΄μΈνΈ
- μλ² μμΌμ μλ² μμ©νλ‘κ·Έλ¨μ΄ ν΄λΌμ΄μΈνΈμ μ μμ κΈ°λ€λ¦¬λ λͺ©μ μΌλ‘λ§ μ¬μ© (listen)
- ν΄λΌμ΄μΈνΈ μμΌ: ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μ΄ μμΌμ ν΅ν΄ μλ²μ μ μ
- μλ²μμΊ£μ ν΄λΌμ΄μΈνΈ μμΌμ λ³λλ‘ λ§λ€μ΄ μλ ν΄λΌμ΄μΈνΈμ ν΅μ
- λμΌν ν¬νΈλ₯Ό μ¬λ¬ ν΄λΌμ΄μΈνΈ μμΌλ€μ΄ 곡μ νλ€.
- μΉμλ² μ΄μ체μ : λΈλΌμ°μ κ° μλ²μ μ°κ²° → μ 보 μ μ₯ (Ip,port,μλ²ν΄λΌμ΄μΈνΈμμΌ)→ λ°μ΄ν°ν¨ν· (Ip,port) μ°Έκ³ → μλ² ν΄λΌμ΄μΈνΈ μμΌ μ°ΎκΈ° → λ°μ΄ν° 보λ΄κΈ°
Socket ν΄λμ€ / ν΄λΌμ΄μΈνΈ μμΌ
java.net ν¨ν€μ§ μ ν¬ν¨
μλ²μ μ μνκ³ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λλ€.
- Socketμμ±μ : μλ²μ IP μ£Όμ/ ν¬νΈλ²νΈλ₯Ό μΈμλ‘ λ°κ³ μμΌ μμ±
- getInputStream() / getOutputStream() : λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μμΌ μ€νΈλ¦Όμ λ²νΌ μ€νΈλ¦Όμ μ°κ²°
- out.write() , out.flush() μλ²λ‘ λ°μ΄ν° μ μ‘
- in.read() ; in.readLine(): μλ²λ‘λΆν° λ°μ΄ν° μμ
- μ‘μμ μ’ λ£ : socket.close()
- Socket μμ±μ / Socket λ©μλ :: ~~~
ServerSocket ν΄λμ€ / μλ² μμΌ
java.net ν¨ν€μ§ μ ν¬ν¨
ν΄λΌμ΄μΈνΈμ μ°κ²° μμ²μ κΈ°λ€λ¦¬λ λͺ©μ μΌλ‘λ§ μ¬μ© / λ°μ΄ν° μ‘μμ X
μλ²κ° ν΄λΌμ΄μΈνΈ μ°κ²° μλ½ → μμΌ κ°μ²΄λ₯Ό λ³λλ‘ μμ±
- ServerSocket μμ±μ : ν¬νΈλ²νΈλ₯Ό μΈμλ‘ λ°μμ μλ² μμΌ μμ±
- accept() : ν΄λΌμ΄μΈνΈλ‘ μ°κ²° μμ² λκΈ° (μλ½μ Socket κ°μ²΄ λ³λλ‘ μμ± ν 리ν΄)
- getInputStream() / getOutputStream() : λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μμΌ μ€νΈλ¦Όμ λ²νΌ μ€νΈλ¦Όμ μ°κ²°
- in.read() ; in.readLine(): ν΄λΌμ΄μΈνΈλ‘λΆν° λ°μ΄ν° μμ
- out.write() , out.flush() : ν΄λΌμ΄μΈνΈλ‘ λ°μ΄ν° μ‘μ
- socket.close() μ‘μμ μ’ λ£ (μμΌ μ°κ²° λκΈ°)
- serverSocket.close() μλ² μμ©νλ‘κ·Έλ¨ μ’ λ£ (ν΄λΌμ΄μΈνΈ μ μ λ°μ§ μμ)
- ServerSocket μμ±μ / ServerSocket λ©μλ :: ~~~