230216(λͺ©)
π μ±μ₯μΌμ§ 3.1
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ ν€μλ (1.0)
μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
π κ²½ν μμ£Όλ‘ (2.0)
λ¨μ μ 보λ₯Ό μ λ¬νκΈ°λ³΄λ€ λ¬΄μμ λ°°μ κ³ μ΄λ»κ² ν΄κ²°νλμ§ μ§§κ³ κ°λ¨νκ² μμ±
βοΈ μ ν΄μ§ ν νλ¦Ώμ λ§μΆ°μ (3.0)
ν€μλ, κ²½ν λͺ¨λ μ’λ€. λ€λ§ λ§€μΌ μμ±νκΈ°λ‘ λ§μ λ¨Ήμλ§νΌ ν΅μ¬λ§ κ°κ²°νκ² μ 리ν μ μκ² ν νλ¦Ώμ μμ± (3.1) 230102λΆν° μμλλ νμ΅μ κ΄ν λ΄μ© μΆκ°
π μ€λμ ν€μλ
DNS
Domain Name System
μ μ½μ- λ¨μνκ² μ°λ¦¬κ° μμ²ν URI(νΉμ URL)μ λν΄ ν΄λΉνλ IP μ£Όμλ₯Ό μ°Ύμμ£Όλ μμ€ν
- μ¬λ μ΄λ¦μ λ°λΌ μ νλ²νΈλ₯Ό μ°Ύμ μ μλ μ νλ²νΈλΆμ λΉμ·ν κΈ°λ₯μ νλ€.
Socket
- νλ‘μΈμ€κ° λ€νΈμν¬λ₯Ό ν΅ν΄ μλ²λ‘ μ΄λ€ μμ²μ μ μ‘ν λ, μ¦ μ΄λ€ μλ΅μ λ°κΈ° μν μ€μ μ μΈ μ°½κ΅¬ μν μ νλ€.
- λ°μ΄ν°λ₯Ό 보λ΄κ±°λ λ°κΈ° μν΄μλ λ°λμ μμΌμ μ΄μ΄μ λ°μ΄ν°λ₯Ό 보λ΄κ±°λ μ½μ΄λ€μ¬μΌ νλ€.
- νλ‘ν μ½, IP μ£Όμ, ν¬νΈ λλ²λ‘ μ μλλ€.
- TCP/IP 4κ³μΈ΅μμ μμ© κ³μΈ΅κ³Ό μ μ‘ κ³μΈ΅ μ¬μ΄μ λμΈλ€.
HTTP
- HyperText Transform Protocol; μ¦, HTMLμ κ΅ννκΈ° μν κ·μΉ(νμ€)
- μΉ μ΄μ°½κΈ°μλ κ°λ¨ν HTMLλ§μ μ λ¬νμ§λ§, μ΄μ λ μ¬μ€μ λ°μ΄νΈλ‘ ννλλ λͺ¨λ λ°μ΄ν°(html, css, js, μ΄λ―Έμ§ λ±λ±)μ μ λ¬ν μ μλ€.
- λ²μ μ 0.9 - 1.0 - 1.1 - 2.0 - 3.0 μμλ‘ λ°μ νμΌλ©°, μ¬μ€μ 1.1 λ²μ μ΄ μ μΌ μ€μνλ€.(κΈ°λ³Έμ μΈ μ€νλ€μ΄ λ§μ΄ κ°μΆ°μ‘λ€.)
- μ΄ν 2.0, 3.0μ μ±λ₯ κ°μ μ μ΄μ μ΄ λ§μΆ°μ Έμλ€.(λ¬Όλ‘ 3.0μ TCPκ° μλ UDP μμμ λμνλ€λ μ°¨λ³μ μ΄ μ‘΄μ¬νλ€.)
- μμ© κ³μΈ΅μ νλ‘ν μ½λ‘ νμ©λλ€.
- μ¬μ€μ μμ¦μ 보μμ΄ κ°νλ HTTPSλ₯Ό λ λ§μ΄ μ¬μ©νλ€.
Request
- ν΄λΌμ΄μΈνΈκ° μλ²μκ² λ³΄λ΄λ μ νΈ
- μμ²μ λ³΄λΌ λλ μμ²μ λν μ 보λ₯Ό λ΄μμ μλ²λ‘ 보λΈλ€.
- λ©μλμ λ°λΌ ν¬κ²
- βGETβ: 리μμ€λ₯Ό μ»λλ€.
- βHEADβ: 리μμ€μ bodyλ₯Ό μ μΈν header, codeλ§ μ»λλ€.
- βPOSTβ: νΉμ λ°μ΄ν°λ₯Ό μ μ‘νκ³ μλ²μ μ μ₯νλ€.(λ°°μ΄μ pushνλ λλ)
- βPUTβ: μλ²μ μλ νΉμ λ°μ΄ν°λ₯Ό ν΅μ§Έλ‘ λ체νλ€.
- βPATCHβ: μλ²μ μλ νΉμ λ°μ΄ν°μ μΌλΆλΆμ μμ νλ€.
- βDELETEβ: μλ²μ μλ νΉμ λ°μ΄ν°λ₯Ό μμ νλ€.
TCP/IP 4 Layers
- TCP/IP 4 κ³μΈ΅μ΄λΌκ³ λΆλ₯΄λ©° OSI 7 κ³μΈ΅ λͺ¨λΈμ λ체νλ€.
- ν¬κ² 4κ°μ κ³μΈ΅μΌλ‘ λλ μ Έ μλ€.
- [4] μμ© κ³μΈ΅: μ£Όλ‘ μ±(νλ‘μΈμ€)μ ꡬμΆλκΈ° λλ¬Έμ μ¬μ©μκ° μνΈμμ©νκΈ° κ°μ₯ μ¬μ΄ κ³μΈ΅. HTTPκ° μμ© κ³μΈ΅μ ν΄λΉ.
- [3] μ μ‘ κ³μΈ΅: TCP(Transmission Control Protocol)μ΄ μ‘΄μ¬, λ§ κ·Έλλ‘ μ μ‘μ λ΄λΉνλ κ³μΈ΅.
- UDP(User Datagram Protocol)λ μ‘΄μ¬, TCPλ³΄λ€ λ¨μνκ³ λΉκ΅μ μμ νκ² λ³΄νΈλμ§ μμλ λλ λ°μ΄ν°λ₯Ό μ μ‘νλ€. ex) μ€μκ° μμ© νλ‘κ·Έλ¨
- [2] μΈν°λ· κ³μΈ΅: IP(Internet Protocol)μ΄ μ‘΄μ¬, λ€νΈμν¬ κ° λ°μ΄ν° ν¨ν·μ μ μ‘ κ΄λ¦¬
- [1] λ°μ΄ν° λ§ν¬ κ³μΈ΅: μνλ κΈ°κΈ°μ MAC μ£Όμ νμΈ, μ΄λλ· μΌμ΄λΈ λ° μμ΄νμ΄λ₯Ό ν΅ν΄ λ°μ΄ν° μ μ‘ κ΄λ¦¬
OSI 7 Layers
- OSI 7 κ³μΈ΅μ΄λΌκ³ λΆλ₯Έλ€.
- ν¬κ² 7κ°μ κ³μΈ΅μΌλ‘ λλ μ Έ μλ€.
- [7] μμ© κ³μΈ΅: μ΄λ©μΌ, νμΌ μ μ‘, μ¬μ΄νΈ μ‘°ν λ± μ΄ν리μΌμ΄μ μ λν μλΉμ€ μ 곡
- [6] νν κ³μΈ΅: λ¬Έμ μ½λ, μμΆ, μνΈν λ±μ λ°μ΄ν° λ³ν
- [5] μΈμ κ³μΈ΅: μΈμ 체결, ν΅μ λ°©μ κ²°μ
- [4] μ μ‘ κ³μΈ΅: μ λ’°ν μ μλ ν΅μ ꡬν
- [3] λ€νΈμν¬ κ³μΈ΅: λ€λ₯Έ λ€ν°μν¬μ ν΅μ νκΈ° μν κ²½λ‘ μ€μ , λ Όλ¦¬ μ£Όμ κ²°μ
- [2] λ°μ΄ν° λ§ν¬ κ³μΈ΅: λ€νΈμν¬ κΈ°κΈ° κ° λ°μ΄ν° μ μ‘ λ° λ¬Όλ¦¬ μ£Όμ κ²°μ
- [1] 물리 κ³μΈ΅: μμ€ν κ°μ 물리μ μΈ μ°κ²°, μ κΈ° μ νΈλ₯Ό λ³ν λ° μ μ΄
- νμ¬λ κ±°μ TCP/IP 4 κ³μΈ΅ λͺ¨λΈμ μ¬μ©νκ³ μλ€.
nodejs - url module
- string νμ μ urlμ νμ±ν΄μ£Όλ λͺ¨λ
import { URL } from 'url';
const myURL = new URL('https://jaydenlee1116.github.io/');
console.log(myURL.hostname);
console.log(myURL.pathname);
// μ΄ μΈμλ μ λ§ λ§μ λΆλΆμ νμ±ν΄μ€λ€.
nodejs - dns module
- urlμ νλΌλ―Έν°λ‘ ipλ₯Ό μ°Ύμμ£Όλ λͺ¨λ
async function getIp(host: string): Promise<string> {
return new Promise((resolve, reject) => {
dns.lookup(host, (err, address, family) => {
resolve(address);
});
});
}
nodejs - net module
- nodejs λΉνΈμΈ λͺ¨λλ‘μ, TCP μλ²μ ν΄λΌμ΄μΈνΈλ₯Ό λ§λλ λ°©λ²μ μ 곡νλ€.
- http, https λͺ¨λμ ꡬννλλ°λ μ¬μ©λλ©° λ low-level apiμ΄λ€.
// μ λ§ κ°λ¨ν μμ
const socket = new net.Socket();
socket.connect({ host: ip, port: 80 }, () => {
console.log('μ°κ²° μ±κ³΅');
console.log(`ip: ${ip}`);
});
μ°Έκ³
- nodejs-url
- nodejs-dns
- nodejs-net
- μ± : λͺ¨λμ λ€νΈμν¬
π μμ½ λ° ν루 κ°λ¨ νκ³
λ³΄ν΅ http, https, fetch, axios λ±κ³Ό κ°μ μμ© κ³μΈ΅μμ μλ²μμ μμ²μ 보λ΄λ λͺ¨λ(λΌμ΄λΈλ¬λ¦¬)λ₯Ό μ¬μ©νλ€. μ€λμ μ μ‘ κ³μΈ΅ μμμ socketμ λ§λ€κ³
headerλ₯Ό μ λ¬νμ¬ get μμ²μ 보λ΄λ httpRequest λͺ¨λμ λ§λ€μ΄λ³΄μλ€. κ·Έλ¦¬κ³ wire sharkλ₯Ό ν΅ν΄μ λ΄κ° λ³΄λΈ μμ²μ λν ν¨ν·μ κ° κ³μΈ΅μμ λ³Ό μ μλ κ² μ κΈ°νλ€.
μ λ°μ μΌλ‘ csκ° μκ°λ³΄λ€ μ¬λ―Έμμ§λ§, κ·Έ μ€μμ λ€νΈμν¬κ° μ§μ§ μ μΌ μ¬λ―Έμλ€. ννν λ€νΈμν¬λ₯Ό κΉκ² 곡λΆνκ³ μΆμ μμ¬μ΄ μκΈ΄λ€!!!
μ€λμ μν μ
- λͺ©ννλ§νΌ λ―Έμ ν΄κ²°, κ°λ κ³΅λΆ λ€ μ±κΈ΄ μ
- μ€λ κ°μΈμ μΈ μΌμ μ΄ μμ΄ λ°μ μμ€μλ λ°λ μκ² κ³΅λΆν μ
μ€λμ μμ¬μ΄ μ
- μ‘°κΈ λ¬΄λ¦¬νκ² μ‘μ κ³νμ΄κΈ΄ νμ§λ§, http κ°μλ₯Ό κ³νλ³΄λ€ μͺΌκΈ λ λ€μ κ² μμ½λ€.