ЁЯУо рдзрдбрд╛ 01 тАФ networking рдХрд╛: рд╢рд╛рд│реЗрдЪреЗ рдЯрдкрд╛рд▓
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-ip-addresses
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
networking рдХреЛрдгрддреА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЗ тАФ рдЖрдгрд┐ рдПрдХрдЪ рдЪрд┐рддреНрд░ (рдкрддреНрддрд╛, рдЦреЛрд▓реА рдХреНрд░рдорд╛рдВрдХ рдЖрдгрд┐ рд░рд╕реНрддрд╛ рдЕрд╕рд▓реЗрд▓реЗ рдкрддреНрд░) рдЬреЗ рдпрд╛рдирдВрддрд░рдЪрд╛ рдкреНрд░рддреНрдпреЗрдХ рдзрдбрд╛ рд╕рдордЬрд╛рд╡рддреЗ. рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕рднрд░ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рд╛рд▓ рдЕрд╢рд╛ рдЦрд▒реНрдпрд╛ files:
- net/demo.py тАФ рдЯрдкрд╛рд▓ рдЦреЛрд▓реА: рдЦрд░реЗ sockets, рд╣рд╛рддрд╛рдиреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ DNS рдкреНрд░рд╢реНрди, рд╣рд╛рддрд╛рдиреЗ рдЯрд╛рдЗрдк рдХреЗрд▓реЗрд▓реА HTTP request, рдПрдХ TLS certificate тАФ рдПрдХрд╣реА dependency рдирд╛рд╣реА
- net/lab.sh тАФ debugging рдЪреА рд╢рд┐рдбреА рдПрдХрд╛рдЪ script рдордзреНрдпреЗ (рдзрдбрд╛ 12)
- net/expected-output.txt тАФ рдирд┐рд░реЛрдЧреА run рдХрд╛рдп рдЫрд╛рдкрддреЛ рддреЗ
ЁЯОТ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЖрдзреА: рддреБрдореНрд╣рд╛рд▓рд╛ Python 3 рдЖрдгрд┐ рдПрдХ terminal рд▓рд╛рдЧреЗрд▓. online рд╡рд┐рднрд╛рдЧрд╛рдВрдирд╛ (DNS, HTTP, TLS) internet рд▓рд╛рдЧрддреЗ; рддреЗ рдирд╕реЗрд▓ рддрд░ рддреЗ рдирдореНрд░рдкрдгреЗ рд╡рдЧрд│рд▓реЗ рдЬрд╛рддрд╛рдд. рдЪрд╛рдВрдЧрд▓реЗ рд╢реЗрдЬрд╛рд░реА: API рд╢рд╛рд│рд╛ (рд▓рдЦреЛрдЯреНрдпрд╛рдЪреНрдпрд╛ рдЖрдд рдХрд╛рдп рдкреНрд░рд╡рд╛рд╕ рдХрд░рддреЗ) рдЖрдгрд┐ AWS рд╢рд╛рд│рд╛ (рд╣реАрдЪ рдЗрдорд╛рд░рдд, рддрд╛рд╕рд╛рдЪреНрдпрд╛ рднрд╛рдбреНрдпрд╛рдиреЗ).
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЗрдорд╛рд░рддреАрдВрдордзрд▓реНрдпрд╛ рджреЛрди рдореБрд▓рд╛рдВрдирд╛ рдЪрд┐рдареНрдареНрдпрд╛ рдкрд╛рдард╡рд╛рдпрдЪреНрдпрд╛ рдЖрд╣реЗрдд. рдиреБрд╕рддреА рдЪрд┐рдареНрдареА рдХреБрдареЗрдЪ рдЬрд╛рдд рдирд╛рд╣реА. рддрд┐рд▓рд╛ рдПрдХ рд▓рдЦреЛрдЯрд╛ рд▓рд╛рдЧрддреЛ тАФ рдЬреНрдпрд╛рд╡рд░ рджреБрд╕рд▒реНрдпрд╛ рдЗрдорд╛рд░рддреАрдЪрд╛ рдкрддреНрддрд╛, рддреНрдпрд╛ рдореБрд▓рд╛рдЪрд╛ рдЦреЛрд▓реА рдХреНрд░рдорд╛рдВрдХ рдЕрд╕рддреЛ тАФ рдЖрдгрд┐ рджреЛрди рдЗрдорд╛рд░рддреАрдВрдордзрд▓рд╛ рдПрдХ рд░рд╕реНрддрд╛ рд▓рд╛рдЧрддреЛ. рдкрд╛рдард╡рдгрд╛рд▒реНрдпрд╛рд▓рд╛ рдПрдХ рдкрд╛рд╡рддреА рд╣рд╡реА рдЕрд╕рддреЗ тАФ рдХрд┐рдВрд╡рд╛ рдореИрджрд╛рдирд╛рдкрд▓реАрдХрдбреЗ рдорд╛рд░рд▓реЗрд▓реНрдпрд╛ рд╣рд╛рдХреЗрд╕рд╛рдареА рдкрд╛рд╡рддреА рдЕрдЬрд┐рдмрд╛рдд рдирдХреЛ.
рд╣реЗрдЪ рд╕рдВрдкреВрд░реНрдг networking рдЖрд╣реЗ. рдкрддреНрддрд╛ рдореНрд╣рдгрдЬреЗ IP address. рдЦреЛрд▓реА рдореНрд╣рдгрдЬреЗ port. рд░рд╕реНрддрд╛ рдореНрд╣рдгрдЬреЗ рддреБрдордЪреНрдпрд╛ рдЦрд╛рд▓рдЪреЗ layers (Wi-Fi, cables, routers). рдкрд╛рд╡рддреА рдореНрд╣рдгрдЬреЗ TCP; рд╣рд╛рдХ рдореНрд╣рдгрдЬреЗ UDP. "рд╡рд┐рдЬреНрдЮрд╛рди рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛" рдпрд╛ рдирд╛рд╡рд╛рдЪреЗ рдЦреЛрд▓реА рдХреНрд░рдорд╛рдВрдХрд╛рдд рд░реВрдкрд╛рдВрддрд░ рдХрд░рдгрд╛рд░реА рд╢рд╛рд│реЗрдЪреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореНрд╣рдгрдЬреЗ DNS. corridor рдордзрд▓реНрдпрд╛ рдХреЛрдгрд╛рд▓рд╛рд╣реА рд╡рд╛рдЪрддрд╛ рди рдпреЗрдгрд╛рд░рд╛ рд╕реАрд▓ рдХреЗрд▓реЗрд▓рд╛ рд▓рдЦреЛрдЯрд╛ рдореНрд╣рдгрдЬреЗ TLS. рдЖрдд рдХреЛрдг рдпреЗрдК рд╢рдХрддреЗ рд╣реЗ рддрдкрд╛рд╕рдгрд╛рд░реЗ рдлрд╛рдЯрдХ рдореНрд╣рдгрдЬреЗ firewall. рдмрд╛рд░рд╛ рдзрдбреЗ, рдПрдХ рдЯрдкрд╛рд▓ рдЦреЛрд▓реА.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
L["ЁЯТ╗ your laptop<br/>a letter: GET /grades"] --> E["тЬЙя╕П the envelope<br/>to 93.184.216.34 : 443<br/>from 192.168.0.12 : 51234"] --> R["ЁЯЪз the road<br/>router тЖТ ISP тЖТ тАж"] --> S["ЁЯПл the server<br/>room 443 тЖТ the web program"]
тЭУ рдХрд╛рдп
- network рдореНрд╣рдгрдЬреЗ рд▓рдЦреЛрдЯреЗ рдЬреНрдпрд╛рд╡рд░реВрди рдкреНрд░рд╡рд╛рд╕ рдХрд░рддрд╛рдд рдЕрд╕рд╛ рдХреЛрдгрддрд╛рд╣реА рд░рд╕реНрддрд╛: рддреБрдордЪреЗ Wi-Fi, office рдЪрд╛ LAN, internet.
- IP address рдЗрдорд╛рд░рддреАрдЪреЗ рдирд╛рд╡ рд╕рд╛рдВрдЧрддреЛ; port рдЦреЛрд▓реАрдЪреЗ рдирд╛рд╡ рд╕рд╛рдВрдЧрддреЛ; рджреЛрдиреНрд╣реА рдорд┐рд│реВрди (рджреЛрдиреНрд╣реА рдЯреЛрдХрд╛рдВрдирд╛ address:port) рддреЗ рдПрдХрд╛ рд╕рдВрднрд╛рд╖рдгрд╛рдЪреЗ рдирд╛рд╡ рдард░рд╡рддрд╛рдд тАФ рдПрдХ socket.
- Protocols рдореНрд╣рдгрдЬреЗ рдкрддреНрд░рд╛рдВрдЪреЗ рдЖрдгрд┐ рд▓рдЦреЛрдЯреНрдпрд╛рдВрдЪреЗ рдард░рд▓реЗрд▓реЗ рдЖрдХрд╛рд░: IP, TCP, UDP, DNS, HTTP, TLS. рдкреНрд░рддреНрдпреЗрдХ рдПрдХрд╛ layer рд╡рд░ рд░рд╛рд╣рддреЛ рдЖрдгрд┐ рдЦрд╛рд▓рдЪреНрдпрд╛рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рддреЛ.
- Latency рдореНрд╣рдгрдЬреЗ рдПрдХрд╛ рдкрддреНрд░рд╛рд▓рд╛ рд▓рд╛рдЧрдгрд╛рд░рд╛ рд╡реЗрд│; bandwidth рдореНрд╣рдгрдЬреЗ рджрд░ second рд▓рд╛ рдХрд┐рддреА рдкрддреНрд░реЗ. рдпрд╛ рджреЛрди рд╡реЗрдЧрд│реНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд (рдзрдбрд╛ 12).
ЁЯдФ рдХрд╛
рдкреНрд░рддреНрдпреЗрдХ "site рдмрдВрдж рдЖрд╣реЗ", "рдорд╛рдЭреНрдпрд╛ machine рд╡рд░ рддрд░ рдЪрд╛рд▓рддреЗ", "рджреБрд╕рд▒реНрдпрд╛ region рдордзреВрди database рд╣рд│реВ рдЖрд╣реЗ" рд╣рд╛ рдЯрдкрд╛рд▓ рдЦреЛрд▓реАрдЪрд╛рдЪ рдкреНрд░рд╢реНрди рдЕрд╕рддреЛ. рдЬреНрдпрд╛ engineers рдирд╛ рд▓рдЦреЛрдЯрд╛ рд╡рд╛рдЪрддрд╛ рдпреЗрддреЛ рддреЗ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯрд╛рдВрдд рджреЛрд╖ рд╢реЛрдзрддрд╛рдд; рдЬреНрдпрд╛рдВрдирд╛ рдпреЗрдд рдирд╛рд╣реА рддреЗ рдЕрдбрдЪрдг рдЬрд╛рдИрдкрд░реНрдпрдВрдд рдЧреЛрд╖реНрдЯреА restart рдХрд░рдд рд░рд╛рд╣рддрд╛рдд.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
net/demo.py рд╣реА рд╕рд╛рдд рд╡рд┐рднрд╛рдЧрд╛рдВрдЪреА рдПрдХрдЪ file рдЖрд╣реЗ; рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЧ standard library рдЪреНрдпрд╛
socket рдЖрдгрд┐ ssl рдЪреНрдпрд╛ рдХрд╛рд╣реА рдУрд│реАрдВрдЪрд╛: threads рдордзреНрдпреЗ рдПрдХ TCP server рдЖрдгрд┐ client, packets
рд╣рд░рд╡рдгрд╛рд░рд╛ UDP sender, рдПрдХ port knocker, byte by byte рдмрд╛рдВрдзрд▓реЗрд▓реА DNS query, рдереЗрдЯ socket рд╡рд░
рд▓рд┐рд╣рд┐рд▓реЗрд▓реА HTTP request, certificate рдЫрд╛рдкрдгрд╛рд░рд╛ TLS handshake, рдЖрдгрд┐ рдПрдХ route рддрдкрд╛рд╕рдгреА.
рдкреБрдврдЪрд╛ рдкреНрд░рддреНрдпреЗрдХ рдзрдбрд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдХрдбреЗ рдмреЛрдЯ рджрд╛рдЦрд╡рддреЛ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 net/demo.py tcp ports # two offline sections: a handshake and receipts, then a knock on the usual rooms
python3 net/demo.py # all seven (the online ones need the internet)
ip addr 2>/dev/null || ifconfig # your building's address(es) тАФ find the 192.168.x.x or 10.x.x.x one
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
tcp рд╡рд┐рднрд╛рдЧ рддреБрдордЪрд╛ socket рдЖрдгрд┐ рдХрд╛рд░рдХреБрдирд╛рдЪрд╛ socket рдЕрд╢рд╛ рджреЛрди ip:port рдЬреЛрдбреНрдпрд╛ рдЫрд╛рдкрддреЛ,
рдордЧ receipt: 31 bytes. ports рд╡рд┐рднрд╛рдЧ рдкреНрд░рддреНрдпреЗрдХ рд╕реБрдкреНрд░рд╕рд┐рджреНрдз рдЦреЛрд▓реАрд╕рд╛рдареА рдПрдХ рдУрд│ рдЫрд╛рдкрддреЛ,
laptop рд╡рд░ рддреНрдпрд╛рддрд▓реНрдпрд╛ рдмрд╣реБрддреЗрдХ closed рдЕрд╕рддрд╛рдд.
net/expected-output.txt рд╢реА рддреБрд▓рдирд╛ рдХрд░рд╛ тАФ port
numbers рд╡реЗрдЧрд│реЗ рдЕрд╕рддрд╛рдд, рдЖрдХрд╛рд░ рддреЛрдЪ рдЕрд╕рддреЛ.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
network рд╡рд░рдЪреЗ рд╕рдВрднрд╛рд╖рдг рдореНрд╣рдгрдЬреЗ рджреЛрди address:port рдЬреЛрдбреНрдпрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдордзрд▓рд╛ рд░рд╕реНрддрд╛ тАФ
рдЖрдгрд┐ рддреБрдореНрд╣реА Python рдордзреВрди рддреАрди рдУрд│реАрдВрдд рддреЗ рдЙрдШрдбреВ рд╢рдХрддрд╛.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- IP address рдПрдЦрд╛рджреНрдпрд╛ program рдЪреЗ рдирд╛рд╡ рд╕рд╛рдВрдЧрддреЛ рдЕрд╕реЗ рд╕рдордЬрдгреЗ. рддреЛ machine рдЪреЗ рдирд╛рд╡ рд╕рд╛рдВрдЧрддреЛ; port program рдЪреЗ.
- "internet рдирд╛рд╣реА" рдЖрдгрд┐ "DNS рдмрд┐рдШрдбрд▓реЗ рдЖрд╣реЗ" рдпрд╛рдВрдд рдЧрд▓реНрд▓рдд рдХрд░рдгреЗ тАФ рдмрд╣реБрдзрд╛ рджреБрд╕рд░реЗ рдЕрд╕рддреЗ (рдзрдбрд╛ 06).
- network рдореНрд╣рдгрдЬреЗ рдХрд╛рд│рд╛ рдбрдмрд╛ рдЕрд╕реЗ рдорд╛рдирдгреЗ. рддреЗ рд▓рдЦреЛрдЯреЗ рдЖрд╣реЗрдд; рдзрдбрд╛ 12 рдордзрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ tool рдПрдХ рд▓рдЦреЛрдЯрд╛ рдЙрдШрдбрддреЗ.
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рдкреНрд░рддреНрдпреЗрдХ outage ticket рд╕рд╣рд╛ рдкреИрдХреА рдПрдХ рдкреНрд░рд╢реНрди рдЕрд╕рддреЛ тАФ рдирд╛рд╡, рдкреЛрд╣реЛрдЪ, route, рдЦреЛрд▓реА, рд╕реАрд▓, рдХреА рдкрддреНрд░ тАФ рдЖрдгрд┐ рдзрдбрд╛ 12 рдЪреА рд╢рд┐рдбреА рддреЗ рдХреНрд░рдорд╛рдиреЗ рд╡рд┐рдЪрд╛рд░рддреЗ. рдЯрдкрд╛рд▓ рдЦреЛрд▓реА рд╢рд┐рдХрдгреЗ рдореНрд╣рдгрдЬреЗ triage рд╢рд┐рдХрдгреЗ.
тПня╕П рдкреБрдвреЗ
рдзрдбрд╛ 02 тАФ IP addresses рдЖрдгрд┐ subnets: 192.168.0.12/24 рдЦрд░реЛрдЦрд░ рдХрд╛рдп рд╕рд╛рдВрдЧрддреЛ, рдЖрдгрд┐ рдкреГрдереНрд╡реАрд╡рд░рдЪреА рджреЛрди рдШрд░реЗ рддреЛ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдХрд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд.