AWS - jjin-choi/study_note GitHub Wiki
Reference
- http://www.kocw.net/home/m/cview.do?cid=6166c077e545b736
- http://www.kmooc.kr/courses/course-v1:SKKUk+SKKU_26+2019_T2/about
- https://covenant.tistory.com/222
Interview
Contents
- Dev
- Network
- Storage
- Security
- Database
- Virtualization
DevOps
-
Development (κ°λ°) κ³Ό Operations (μ΄μ) μ΄ ν©μ³μ§ λ¨μ΄λ‘ νλμ μμ΄λμ΄ (μλ‘μ΄ μννΈμ¨μ΄ κΈ°λ₯, κ°μ μμ² λλ λ²κ·Έ μμ λ±) κ° μ¬μ©μμκ² κ°μΉλ₯Ό μ 곡ν μ μλλ‘ μ΄μ νκ²½μμ κ°λ°λΆν° λ°°ν¬λ‘ μ§νλλ νλ‘μΈμ€μ μλλ₯Ό λμ΄λ μ κ·Ό λ°©μμ μλ―Ένλ€.
-
νμ¬ μμ μν λ°©μμ λμ΄μλ νλ‘μΈμ€ λ³κ²½μ΄ νμν¨μ λ°λΌ, μννλ μμ λ λ³κ²½λ μλ°μ μλ€. DevOpsλ κΈ°μ‘΄μ λμΌν λͺ¨λ리μ μννΈμ¨μ΄μ κ°λ°μ κ°μννλ κ²λΏ μλλΌ μ΄λ¬ν μ§μμ μΈ κ°λ° νλ¦μ λμ± μ ν©ν μλ‘μ΄ μ’ λ₯μ μννΈμ¨μ΄λ₯Ό κ°λ°νλ κ²κ³Ό κ΄λ ¨μ΄ μλ€.
-
μ΄λ° μ΄μ λ‘ DevOps νμ΄ [λ§μ΄ν¬λ‘μλΉμ€] μν€ν μ²λ₯Ό μ¬μ©νμ¬ μννΈμ¨μ΄λ₯Ό ꡬμΆνκ³ [API] λ‘ μ΄λ¬ν μλΉμ€λ₯Ό ν¨κ» μ°κ²°νλ κ²½μ°κ° λ§λ€. DevOps νμ΄ κ°κ°μ κΈ°λ₯μ λ μμ λ¨μλ‘ κ΅¬μΆν¨μΌλ‘μ¨ μλΉμ€λ₯Ό λ³΄λ€ μ μνκ² μ 곡 κ°λ₯νλ―λ‘ μ΄λ¬ν μλΉμ€μ APIκ° κ΄λ¦¬λλ λ°©μμ μ€μ μ λκ³ μ΄ λͺ¨λλ₯Ό ν΅ν©ν μ μλ μ μμΌ ν΅ν©κ³Ό κ°μ μ λ΅μ μ립ν΄μΌ νλ€.
Network
1. μ»΄ν¨ν° λ€νΈμν¬ κΈ°λ³Έ 1
-
network edge μ μ¬μ©μκ° μμΉνκ³ network core μ λΌμ°ν°κ° μμΉ.
- network edge: applications and hosts
- network core: routers, network of networks
- access networks, physical media communication links
-
The network edge
- end systems (hosts): run application programs (e.g. web, email).
- client/server model: client host requests, receives service from always-on server.
- (client) μκΈ°κ° μν λ link μ μ°κ²°ν΄μ μλ²λ‘λΆν° μ 보λ₯Ό κ°μ Έμ€λ μμ.
- (server) 24 μκ° μ°κ²°λμ΄ μμ΄μ client λ‘λΆν°μ μμ²μ κΈ°λ€λ¦¬λ μμ.
- peer-peer model
-
The network edge: connection-oriented service
- goal: data transfer between end systems.
- TCP (Transmission Control Protocol): connection-oriented service λ₯Ό μ 곡νλ ν΅μ λ°©λ².
- client μκ² λ€μκ³Ό κ°μ λ΄μ©μ μ 곡νλ€.
- reliable, in-order byte-stream data transfer. λ©μμ§λ₯Ό λΉ λ¨λ¦¬μ§ μκ³ μμλλ‘ λμ°©νλ€.
- flow control: sender won't overwhelm receiver. sender κ° λ°μ΄ν°λ₯Ό λ³΄λΌ λ receiver μκ² μλ§μ μλλ‘ μ‘°μ νμ¬ μ λ¬ν΄μ€λ€.
- congestion control: sender slow down sending rate when network. λ€νΈμν¬ μν©μ λ§κ² μ λ¬νλ€.
- computing resource, networking resource κ° λ§μ΄ μμλλ€.
-
The network edge: connectionless service
- goal: data transfer between end systems.
- UDP (User Datagram Protocol)
- connectionless
- unreliable data transfer
- no flow control
- no congestion control
- λ°μ΄ν°κ° μμ μ μΌλ‘ μ μ μ‘λλμ§ μκ΄μμ΄ λ³΄λ΄κΈ°λ§ νκ³ μΆλ€λ©΄ UDP λ₯Ό μ¨λ μ’λ€.
- μμ± μ νλ λͺ κ° μ λ μ μ€λμ΄λ μ¬λλ€μ΄ κ°μ§λ₯Ό λͺ»νκΈ° λλ¬Έμ UDP λ₯Ό μ¬μ©ν΄λ λλ€.
- λλΆλΆμ κ²½μ°λ reliable ν κ² νμνλ―λ‘ TCP λ₯Ό μ¬μ©νλ€.
- packet: νΈμ§ λ΄ν¬μ²λΌ λ©μμ§κ° λ΄κΈ΄ κ².
-
What's a protocol?
- All communication in Internet coordinated by protocols.
-
The network core
- mesh of interconnected routers
- μΆλ°μ§μμ λͺ©μ μ§κΉμ§ λ°μ΄ν°λ₯Ό μ΄λ»κ² μ λ¬μ ν κΉ?
- the fundamental questions: how is data transferred through net?
- circuit switching: μΆλ°μ§μμ λͺ©μ μ§κΉμ§ κ°λ κΈΈμ 미리 μμ½μ ν΄λκ³ νΉμ μ¬μ©μλ§ μ¬μ©νλλ‘. μμ μ μ μ νλ§μ΄ μ΄ λ°©μμ μ¬μ©.
- packet-switching: statistical multiplexing. packet λ¨μλ‘ λ°μμ κ·Έ λ κ·Έ λ μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ μ μ‘νλ λ°©μ.
-
Packet switching versus circuit switching
- router μμ λνλ λ°μ΄ν°μ bandwidth κ° 1 Mbps λΌκ³ νλ©΄ (μ΄λΉ 1Mbits)
- κ° user μ internet μ μ¬μ©ν λ 100 Kbps λ°μ΄ν°λ₯Ό 보λΈλ€κ³ κ°μ .
- μ΄λ₯Ό circuit switching μ μ¬μ©νλ©΄ μ΅λ 10 λͺ κΉμ§ user λ§ μ§μν΄ μ€ μ μλ€.
- packet switching μ μ΅λ μ¬μ©μλ μ νμ΄ μμ.
- router μμ λνλ λ°μ΄ν°μ bandwidth κ° 1 Mbps λΌκ³ νλ©΄ (μ΄λΉ 1Mbits)
-
How do loss and delay occur?
- packets queue in router buffers.
- packet μ λ°κ³ λ€μ packet μ λ°κΈ° κΉμ§ μΌλ§ λ§νΌμ delay κ° μκΈΈκΉ?
-
Delay in packet-switched networks
-
- nodal processing: λͺ©μ μ§λ₯Ό νμΈνκ³ output link λ₯Ό κ²°μ
-
- queueing: λ§μ½ user requests κ° bandwidth λ³΄λ€ ν΄ κ²½μ°μλ μμ μ μ₯ buffer νΉμ queue λΌ λΆλ¦¬μ°λ μ μ₯ μ₯μκ° μ‘΄μ¬νλ€. λ°λΌμ outgoing edge μμ κΈ°λ€λ¦¬λ μκ°μ΄ μ‘΄μ¬ν μ μλ€.
- μ¬λλ€μ΄ μΈν°λ·μ μ¬μ©νλ pattern μ λ°λΌ delay κ° λ¬λΌμ§ μ μλ€.
-
- transmission delay: 첫λ²μ§Έ bit κ° μ μ‘λ μμ λΆν° λ§μ§λ§ bit κ° μ μ‘ μλ£λ μμ κΉμ§ κ±Έλ¦° μκ°.
- R: link bandwidth (bps)
- L: packet length (bits)
- time to send bits into link = L/R
- router bandwidth κ° pipe μ΄κ³ packet μ΄ μλμ΄λΌκ³ νλ©΄ μλμ΄μ λ΄κΈ΄ λ¬Όμ pipe λ‘ λ£μ΄ λ³΄λΌ λ pipe κ° μ’μΌλ©΄ μκ°μ΄ μ€λ κ±Έλ¦¬κ³ pipe κ° λμΌλ©΄ μκ°μ΄ μ‘°κΈ κ±Έλ¦°λ€.
- router bandwidth μ λμ΄κΈ° μν΄ μΌμ΄λΈμ λμ κ²μΌλ‘ κ΅μ²΄νλ λ°©λ².
-
- propagation delay: λ§μ§λ§ bit κ° link μ μ¬λΌμμ λ€μ router μ λλ¬ν λκΉμ§ κ±Έλ¦° μκ°. λ¨μν μ μκΈ°ν μλ. λΉμ μλ. link κΈΈμ΄λ₯Ό λΉμ μλλ‘ λλ κ². κΈΈλ©΄ delay κ° κΈΈκ³ link κ° μ§§μΌλ©΄ delay κ° μ§§μμ§λ€.
- d: length of physical link
- s: propagation speed in medium
- propagation delay = d/s
- s and R are very different quantities !!!
-
-
network μμμλ queue λ³΄λ€ λ λ§μ΄ packet μ΄ λ€μ΄μ€λ©΄ λ°μ΄ν°κ° loss λλλ° TCP μμλ μ΄λ»κ² reliable ν μ μμ κ²μΈκ°?
- μ μ€μ΄ μκΈ° λ§λ ¨μ΄λ―λ‘ μ¬μ μ‘μ ν΄μ£Όμ΄μΌ νλ€.
- κ·ΈλΌ λκ° μ¬μ μ‘μ ν κ²μΈκ°? μ§μ router κ° μ¬μ μ‘ ν΄μ£Όλ λ°©λ²μ΄ μμ κ²μ΄κ³ λ€μ μ²μλΆν° μ¬μ μ‘ν΄μ£Όλ λ°©λ²μ΄ μμ μ μλ€.
- TCP λ κ°μ₯ μ²μ μμΉμ μλ router κ° μ¬μ μ‘μ λ΄λΉνλ€.
- κ°μ₯ μ²μ router μ λͺ¨λ client edge μ 보λ₯Ό κ°μ§κ³ μκ³ λλ¨Έμ§λ μ λ¬λ§ νλ€.
- μ€κ°μ μλ router μ 빨리 μ μ‘νλ κ²λ§μ λͺ©μ μΌλ‘ νλ€.
- νμ¬ internet λμμΈμ λͺ¨λ κΈ°λ₯μ μΈ λ©μ»€λμ¦μ edge μμ νκ³ dump core μμλ λ¨μ μ μ‘λ§ λ΄λΉνλλ‘.
2. μ»΄ν¨ν° λ€νΈμν¬ κΈ°λ³Έ 2
-
(Review) Four sources of packet delay: packet μ΄ μ€κ°μ μ¬λ¬ router μ κ±°μ³μ μ μ‘λλλ° μ΄ λ router κ° packet μ λ°μμ μλ§μ λ°©ν₯μΌλ‘ μ λ¬νλ κ³Όμ μμ delay κ° λ°μνλ€.
- delay λΆλ₯
- nodal processing delay: packet μ κ²μ¬νλλ° κ±Έλ¦¬λ μκ° (μ΅μ’ λͺ©μ μ§λ μ΄λμΈμ§, λ€μ router λ 무μμΌμ§)
- queueing delay
- transmission delay
- propagation delay
- ν λ²μ λμμ λ§μ μ¬μ©μκ° router μ packet μ λ³΄λΌ κ²½μ°μ λ¬Έμ κ° λ°μν μ μμΌλ©° μΌλΆλ queue μ packet μ΄ μμ΄κ² μ§λ§, queue λ³΄λ€ λ λ§μ packet μ΄ λ€μ΄μ€κ² λλ©΄ packet loss κ° μΌμ΄λλ€.
- delay λΆλ₯
-
2.1. Principles of network applications
- Application (HTTP) -> Transport (TCP, UDP) -> Network (IP) -> Data Link layer (WiFi, LTE/3G, Ethernet)
- κ° κ³μΈ΅μλ λ€μν protocol μ΄ μ‘΄μ¬νλ©° κ° κ³μΈ΅μμ μ€μν protocol μ λν΄μ μμλ³Ό μμ .
- νμ κ³μΈ΅μμ μμ κ³μΈ΅μκ² service, κΈ°λ₯μ μ 곡νλ€.
- μ¦ Application μ νμ κ³μΈ΅μΈ Transport μμ μ 곡νλ κΈ°λ₯μ μ¬μ©ν μ μλ€.
- Client-Server architecture
- μΈν°λ· μ μ‘΄μ¬νλ computer μ κ³ μ ν μ£Όμ (IP address) λ₯Ό κ°κ³ μμ.
- κ·Έ μ€μμ server μ permanent IP address λ₯Ό κ°κ³ μμ΄μΌ νλ€.
- λ°λλ‘ client λ κ³ μ λμ΄ μμ§ μμλ λλ€.
- Processing communicating
- process: program running within a host.
- νλμ μ»΄ν¨ν° λ΄μμ inter-process communication (IPC) μ¦ νλ‘μΈμ€ κ° ν΅μ μ μν΄μ OS κ° system call, μ¦ interface λ₯Ό λ§λ€μ΄ λμλ€.
- μ§κΈ λ€λ£¨λ λ΄μ©μ λ€λ₯Έ hosts μ¬μ΄μ νλ‘μΈμ€ κ° ν΅μ μ λ§νλ©° μ΄λ exchanging message λ‘, μ¦ Socket (interface) μ μ΄μ©νμ¬ ν΅μ νλ€.
- Socket
- Host1 κ³Ό Host2 μ Process1 κ·Έλ¦¬κ³ Process2 κ° μλ‘ ν΅μ νκΈ° μν΄μλ μ¬μ μ Host1 κ³Ό Host2 κ° μ°κ²°λμ΄ μμ΄μΌ νλ€. μ°κ²°μν€λ €λ©΄ Process1 μ΄ Process2 μ socket κ³Ό μ°κ²°νκ³ μΆλ€λ μμ¬ννμ νκΈ° μν΄μλ Process2 socket μ μ£Όμλ₯Ό μκ³ μμ΄μΌ νλ€. Process2 socket μ μ£Όμ μν μ νλ κ² λ°λ‘ IP address + Port number μ‘°ν©μ΄λ€.
- IP address λ μΈν°λ· μμ μ‘΄μ¬νλ Host μ μ£Όμμ΄κ³ ν΄λΉ Host μ μ¬λ¬ Process κ° μμν λ° νΉμ νλ‘μΈμ€λ₯Ό μ§μΉν λ Port κ° μ¬μ©λλ€.
- μλ₯Ό λ€μ΄ naver μΉ λΈλΌμ°μ μ μ μνκ³ μ νλ€λ©΄, X.X.X.X:80 μ΄λΌλ IP address + port λ₯Ό μ λ ₯ν΄μΌ νμ§λ§, μ΄λ₯Ό μΈμ°κΈ° μ΄λ ΅κΈ° λλ¬Έμ μνλ²³ μ£ΌμμΈ www.naver.com μΌλ‘ μ μνκ³ μ΄λ κ² μ λ ₯λ κ²½μ° DNS (IP μ£Όμλ§ λ²μν΄ μ£Όκ³ port number μ λμΌν 80 μΌλ‘ μ½μ) μ μν΄μ ν΄λΉ IP address + port λ‘ μ μλλ€.
- λͺ¨λ μΉ μλ²λ 80 λ²μ port μ μ¬μ©νλ€.
- What Transport service does an Application need?
- data integrity: λ°μ΄ν° 무결μ±
- timing: μκ°μ λν ν¬λ§ μ¬ν
- throughput: 1μ΄μ μ΄λμ λμ μ 보λμ΄ λλ¬ν΄μΌ νλ€λ μλ―Έ. (packet μ΄ νΉμ μμ μ λͺ°μμ νλ²μ μ μ‘λκ±°λ λλμ΄ μ μ‘λκ±°λ λμΌ. μλ₯Ό λ€μ΄ μν λ€μ΄ λ‘λ κ°μ κ²½μ°)
- security
- μ€μ Transfort μμ μ 곡νλ κΈ°λ₯μ data integrity μλΉμ€λ§ μ 곡νλ©° (TCP) λλ¨Έμ§ timing, throughput, security λ νμ¬ μ 곡ν΄μ£Όμ§ μλ κΈ°λ₯μ΄λ€.
- λ°λΌμ security κ° μ 곡λμ§ μκΈ° λλ¬Έμ Application layer μμ application μ ν΅ν΄ ꡬνν΄μΌ νλ€.
-
2.2 Web and HTTP (HyperText Transfer Protocol)
- HTTP: Hypertext μ μ λ¬νλ protocol
- Hypertext: λ€λ₯Έ ν μ€νΈλ₯Ό μ§μΉνλ λ§ν¬κ° μ‘΄μ¬νλ ν μ€νΈ
- request: μνλ hypertext file μ΄λ¦
- response: ν΄λΉ hypertext file μ λ¬
- Application layer μ HTTP λ₯Ό μν΄μλ Transport layer μ TCP λ₯Ό μ¬μ©νκΈ° μν΄ μ¬μ μ μ°κ²°μ ν΄μ£Όμ΄μΌ νλ€.
- HTTP is "stateless": HTTP λ μ λ§ λ¨μν΄μ request μ ν΄λΉνλ νμΌμ μ½μ΄ 보λ΄λ μν λ§ νλ€. μ¦ μλλ°©μ λν μνλ₯Ό κΈ°μ΅νμ§ μμ.
- server maintains no information about past client requests.
- HTTP connections: TCP λ₯Ό μ¬μ©νλ λ°©μμ λ°λΌμ 2κ°μ§λ‘ λλμ΄μ§λ€.
- TCP connections μ λ§λ€κ³ HTTP λ‘ message μ μ£Όκ³ λ°μ ν TCP connection μ μ¬μ¬μ©νλμ§, νΉμ λλμ§μ λ°λΌμ μλμ κ°μ΄ λλμ΄μ§.
- non-persistent HTTP: at most one object sent over TCP connection, then closed.
- persistent HTTP: multiple objects can be sent over single TCP connection between client, server
- Non-Persistent HTTP
- μ΄λ€ URL μ text μ 10 κ°μ jpeg image μ λν reference κ° μλ€κ³ κ°μ νλ€λ©΄,
-
- κ°μ₯ λ¨Όμ TCP connection μ νλ€.
-
- hypertext file μ λν request / response κ° μΌμ΄λλ€.
-
- TCP connection μ closed νλ€.
-
- κ·Έ λ€μμ 10 κ°μ jpeg image μ λν reference λ μ½μ΄μ κ°μ ΈμμΌ νλ€.
-
-
- ~ 3) μ λ€μ λ°λ³΅νλ€.
-
- Non-Persistent HTTP: response time
- RTT: time for a small packet to travel from client to server and back
- μ€μ λ‘λ 1κ°μ hypertext file λ§ μ£Όκ³ λ°μΌλ©΄ λ무 μ€λ 걸리기 λλ¬Έμ pipeline μ²λΌ μ¬λ¬κ°λ₯Ό νλ²μ μ μ‘νκ³ νλ²μ λ°λ λ°©μμΌλ‘ μ§νλλ€.
- HTTP: Hypertext μ μ λ¬νλ protocol
-
2.3 FTP
-
2.4 Eletronic mail (SMTP, POP3, IMAP)
-
2.5 DNS
-
2.6 P2P application
-
2.7 Socket programming with UDP and TCP
3. Application Layer
-
Socket
- νμ¬ OS μλ Transport Layer μλ TCP νΉμ UDP λ§ κ΅¬νλμ΄ μλ€. λ μ€ νλλ₯Ό μ ννμ¬ ν΄λΉ socket μ μ¬μ©νμ¬ Application Layer λ ν΅μ μ νκ² λλ€.
- TCP Socket μ λ°μ΄ν°λ₯Ό μ°λ©΄ TCP λ₯Ό μ¬μ©νλ κ²μ΄κ³ UDP Socket μ λ°μ΄ν°λ₯Ό μ°λ©΄ UDP λ₯Ό μ¬μ©νλ κ².
- TCP Socket μ SOCK_STREAM μ΄λΌ λΆλ¦¬μ°κ³ UDP λ SOCK_DGRAM μ΄λΌκ³ λΆλ¦¬μ΄λ€.
-
Big picture: Socket functions (API)
- TCP Server
- socket(): web server κ° socket μ μμ±νλ€.
- bind(): λ°©κΈ μμ±ν socket μ νΉμ port μ bind νκ² λ€λ μλ―Έ.
- listen(): μ΄ socket μ©λλ₯Ό listen νλλ° μ¬μ©νκ² λ€. (server μ΄λ―λ‘)
- accept(): client λ‘λΆν° μμ²μ λ°μ μ€λΉκ° λμλ€λ μλ―Έ.
- μ¬κΈ°κΉμ§ μνμ΄ λλ©΄ client λ‘λΆν° connection μ΄ μ¬ λκΉμ§ server λ blocking μ΄ λλ€. (μλμ )
- TCP Client
- socket(): socket μ μ΄κ³
- connect(): μνλ process μ connect νκ² λ€λ μλ―Έ.
- Connection μ λμ λμλ TCP Client μμ close() λ₯Ό νκ³ TCP Server κ° μ΄λ₯Ό read() ν νμ close() νλ€.
- TCP Server
-
Socket Creation and Setup
- Function: socket()
- int socket(int domain, int type, int protocol);
- type: SOCK_STREAM for TCP, SOCK_DGRAM for UDP
- Function: bind()
- int bind(int sockfd, struct sockaddr* myaddr, int addrlen);
- Function: listen()
- int listen(int sockfd, int backlog);
- backlog: λμμ request κ° μ¬λ¬ κ° λ€μ΄μ€λ©΄ μ΅λ λͺ κ°λ₯Ό μ²λ¦¬ν κ²μΈμ§
- Function: accept()
- int accept(int sockfd, struct sockaddr* cliaddr, int* addrlen);
- accept is blocking: accept κ° μνλλ©΄ blocking μ΄ λμλ€κ° client λ‘λΆν° connection μμ²μ΄ λ€μ΄μ€λ©΄ μνμ΄ λλ©΄μ return μ΄ λλ€.
- return μ΄ λ λ client ip μ port κ° μ μ₯μ΄ λλ€.
- Function: socket()
-
Tearing Down a connection (TCP)
- Function: close()
- socket μ¬μ©μ΄ λλ μ΄νμ close ν λ
- Function: close()
-
Multiplexing and Demultiplexing
- μ»΄ν¨ν° Application layer μ λ§μ νλ‘μΈμ€λ€μ΄ μλ μν©μ κ°μ socket μ κ°κ³ μλ μν©μμ Transport layer μ Application layer λ‘λΆν° λ°μ message λ₯Ό segment λ‘ λ§λ€μ΄ μλ layer λ‘ λ³΄λ΄μ£Όμ΄μΌ νλ€. μ΄λ₯Ό Multiplexing μ΄λΌκ³ νλ€.
- Receiver μΈ‘λ©΄μ Transport layer μμ segment λ₯Ό Application layer μ μ¬λ¬ socket μ€μ λ°μμΌ ν socket μΌλ‘ 보λ΄μ£Όλ κ²μ΄ Demultiplexing μ΄λ€.
- Segment λ data + header λ‘ κ΅¬μ±λλ€. header λ΄μ field κ° μκ³ μ΄ μ€μ source port #, dest port # μ΄ λμμλ€. (κ°κ° 16 bits)
- UDP μ κ²½μ° demultiplexing λΆν° μ΄ν΄λ³΄μ. Connectionless demux (UDP) μ΄λ―λ‘ λͺ¨λ UDP socket μ μ΄μ΄λ μνμ΄λ€.
- Transport layer μμμ segment μ header μλ source port, dest port κ° μ νκ³ Network layer μμμ packet μ header μ λͺ©μ μ§μ IP address κ° μ νλ€.
- μλ‘ λ€λ₯Έ server μμ μ€λλΌλ λͺ¨λ κ°μ port, socket μΌλ‘ λ€μ΄κ°λ€. (κ°μ process λ‘ λ€μ΄κ°λ€λ μλ―Έ)
- UDP λ₯Ό μ¬μ©νλ κ²½μ°μλ demultiplexing μ΄ destination IP + destination Port λ§μ μ¬μ©ν΄μ μ΄λ€ socket μΌλ‘ μ¬λ¦΄μ§ demultiplexing μ΄ μ΄λ£¨μ΄μ§λ€.
- TCP μ κ²½μ° demultiplexing μ μ΄ν΄λ³΄μ. Connection-oriented demux (TCP)
- source IP, source port, destination IP, destination port 4 κ°μ κ°μ κΈ°λ°μΌλ‘ μ΄λ€ socket μΌλ‘ μ¬λ¦΄μ§ demultiplexing μ΄ μ΄λ£¨μ΄μ§λ€. μ΄ 4 κ° κ° μ€ 1κ°λΌλ λ€λ₯Ό κ²½μ°μλ λ€λ₯Έ socket μΌλ‘ μ μ‘λλ€.
- destination IP, destination port κ° λμΌνλ€κ³ ν μ§λΌλ demultiplexing μ κ²°κ³Όλ‘ λͺ¨λ λ€λ₯Έ socket μΌλ‘ μ μ‘λ μ μλ€.
- μ¦ connection-oriented λΌκ³ λ³Ό μ μλλ° κ·Έ μ΄μ λ νΉμ IP address λ‘λΆν°μ process λ νμ νΉμ socket μΌλ‘.
- UDP λ μ΄λ λꡬμ μ°κ²°λ socket μ΄ μλκ² μλλΌ destination IP, port λ§ λ§μΌλ©΄ μ무λ λ€ λ°μ μ μλ€.
- λ°λΌμ ν΄λΉ process μ thread κ° κ°κ°μ socket μ λ΄λΉνλ€. λ°λΌμ μμμ λ§μ΄ μλͺ¨νλ€.
- μ΄μ¨λ TCP, UDP λ multiplexing κ³Ό error checking μ ν΄μ€λ€.
-
UDP (User Datagram Protocol)
- Segment header field λ 4 κ° λ°μ μμ. λμμ΄ λ¨μνλ€.
- fields: source port number (16 bits), dest port number (16 bits), length (16 bits), checksum (16 bits)
- checksum: μ€μ λ΄κΈ΄ data λ₯Ό μ μ‘νλ λμ€μ μλ¬κ° μμλμ§ μμλμ§ νμΈν΄ μ£Όλ field.
- λ°μ΄ν°μ μλ¬κ° λ°μν κ²½μ°μλ λ°μ΄ν°λ₯Ό μ¬λ €λ³΄λ΄μ§ μκ³ λ°λ‘ drop.
- UDP λ₯Ό ν΅ν΄μ message λ₯Ό λ°μ κ²½μ°μ μ΅μν λ°μ΄ν° μ μ‘ κ³Όμ μ μλ¬κ° λ°μνμ§λ μμλ€λ κ²μ 보μ₯.
- Segment header field λ 4 κ° λ°μ μμ. λμμ΄ λ¨μνλ€.
-
TCP μ²λΌ Reliable νκ² μ΄λ»κ² λμνλμ§? Reliable Data Transfer
- Transport μλ layers μ λΌμ°ν° μ¬μ΄μ ν΅μ μ μ¬μ€ unreliable ν νκ²½μ΄λ€.
- μ΄λ‘ μΈν΄ message error, message loss λ κ°μ§ κ²°κ³Όλ₯Ό μ΄λν μ μλ€.
- Simple Reliable Data Transfer
- ν λ²μ packet μ 1κ°μ©λ§ 보λ΄λ λ°©μ.
- Rdt 1.0
- κ°μ : μλ²½νκ² reliable νλ€κ³ κ°μ (no packet errors, no packet loss) νλ€λ©΄ μ°λ¦¬κ° νμν mechanisms μ΄ λ°λ‘ μλ€.
- Rdt 2.0
- κ°μ : packet errors (no loss) μν©μ΄λΌκ³ κ°μ νλ€λ©΄, μ΄ μλ¬λ₯Ό μ²λ¦¬νκΈ° μν΄ μ΄λ€ mechanism μ΄ νμν κΉ?
- Error Detection: add checksum bits μΌλ‘ νλ¨. λ§μ½ μλ¬κ° μμλ€λ©΄ λ€μ 보λ΄λ¬λΌκ³ μμ²νκ±°λ feedback μ μ£Όμ΄μΌ νλ€.
- Feedback: Acknowledgements (ACKs) / Negative Acknowledgements (NAKs). packet μ λ°μ λλ§λ€ νΌλλ°±μ μ€μΌ νλ€.
- Re-transmission: μ¬μ μ‘
- Rdt 2.0: Can this completely solve errors?
- feedback packet μλ checksum μ΄ μμ΄μΌ νλ€. κ·ΈλμΌ feedback μλ μλ¬κ° μλμ§ μ μ μλ€.
- feedback μ μλ¬κ° μμΌλ©΄ receiver κ° μ λλ‘ λ°μλμ§ μ λ°μλμ§ μ μ μλ€. λ°λΌμ μ¬μ μ‘μ νκ² λλ©΄ receiver μ μ₯μμλ μ λλ‘ μ μ λ°μλλ° μ€λ³΅λ packet μ΄ μ λ¬λ μλ μλ€.
- receiver μ μ₯μμ μλ‘μ΄ μ 보μΈμ§ duplicate μ 보μΈμ§ μ΄λ»κ² μ μ μμκΉ?
- Rdt 2.1: Handling duplicate packets
- sender κ° sequence number μ packet μ λΆμ¬μ 보λΈλ€.
- feedback μ μλ¬κ° μμ κ²½μ°μλ 무쑰건 μ¬μ μ‘. μ¬μ μ‘μ νλλΌλ sequence number κ° μμΌλ―λ‘ receiver λ μ€λ³΅ μ 보λ₯Ό μ²λ¦¬ν μ μκ² λλ€.
- sequence number μ λΆκ°μ μΈ μ 보μ΄λ―λ‘ header μ μ νμ 보λ΄μ§ν λ°, μ΄λ₯Ό 0 λΆν° μμ°¨μ μΌλ‘ μ¦κ°νλλ‘ νλ©΄ 무νλλ‘ μ»€μ§ μ μλ€. μ¦ header ν¬κΈ°κ° λ§€μ° μ»€μ§ μ μμ.
- field μ ν¬κΈ°λ μ΅μνν΄μΌ ν¨.
- sequence number μ 2κ°λ‘ μΆ©λΆ. λ²κ°μ κ°λ©΄μ μ¬μ©νλ©΄ λλ€. (1κ°μ packet λ§ λ³΄λ΄λ κ²½μ°μλ)
- μμ½νμλ©΄, error detection, feedback, re-transmission, sequence number μ μ΄μ©νλ€.
- Receiver μ νμ ACK / NAK μ μ μ‘ν΄μΌ νλ€.
- Rdt 2.2: NAK-free protocol
- ACK λμ μ κ°μ₯ λ§μ§λ§μΌλ‘ μ μ μμ ν sequence number μ μ μ΄λ³΄λ΄μ€λ€.
- μ¦ PKT(0) μ λ°μΌλ©΄ ACK(0) μ 보λ΄κ³ , PKT(1) μ sender κ° λ³΄λλλ° μ¬κΈ°μ μλ¬κ° λ°μνμ¬ receiver κ° μ΄λ₯Ό μ μμ μΌλ‘ λ°μ§ λͺ»νμλ€λ©΄ receiver μ λ ACK(0) μ 보λΈλ€. κ·ΈλΌ sender μ λκ° μ λͺ» μ μ‘λμλ€λ κ²μ μκ² λκ³ PKT(1) μ μ¬μ μ‘νλ€. κ·ΈλΌ ACK(1) μ μ μ‘νκ³ PKT(0) μ λ€μ λ³΄λΌ μ μκ² λλ€.
- Rdt 3.0: channel with "loss" & packet errors
- sender μ μ₯μμ message loss κ° λ°μνλ©΄ μλ¬΄λ° response μ λ°μ§ λͺ»νλ€.
- What mechanisms do we need for packet loss? "Timer" !
- Sender μ packet μ λ³΄λΌ λλ§λ€ timer μ μ΄μ©νμ¬ μΌμ μκ°μ΄ μ§λλ©΄ μ μ€ λμλ€κ³ νλ¨νκ³ μ¬μ μ‘νλ©΄ λλ€.
- κ·ΈλΌ μΌλ§νΌ κΈ°λ€λ €μΌ ν κΉ? μ΄λ μ λ΅μ΄ μλ€. "reasonable" amount of time.
- timer μκ°μ΄ 짧μΌλ©΄ μ€μ λ‘ μ μ€μ΄ μμ΄λ μ μμ κ²½μ°μ recovery κ° λΉ λ₯΄λ€. νμ§λ§ λ¨μ μ packet μ΄ λ€μ μ μ‘λ μ μμ΄μ network μ overhead λ₯Ό μ€ μ μλ€.
- timer μκ°μ΄ κΈΈλ©΄ network overhead λ₯Ό μ€μΌ μ μμ§λ§ loss κ° λ°μνμ λ λ°μμ΄ λ¦μ΄μ§κ² λλ€.
- timer μ μ§§κ² μ‘μμ μ¬μ μ‘μ νκ² λλ©΄ receiver κ° μ€λ³΅λ packet μ΄λΌ λ°μ§λ μμ κ±°λΌ receiver μ λ¬Έμ κ° λμ§λ μκ³ network μ overhead κ° λ°μνλ κ².
- sender λ‘λΆν°μ packet μ΄ μ μ€λκ±°λ receiver λ‘λΆν°μ packet μ΄ μ μ€λκ±°λ sender μ μ₯μμλ λμΌνλ€.
- Recap: Principles of Reliable Data Transfer
- Unreliable channel μμλ packet error, packet loss κ° λ°μν μ μλ€.
- Packet error μ μν mechanisms μ Error detection, feedback, re-transmission, sequence number
- Packet loss μ μν mechanisms μ Timeout μ΄ μλ€.
- μ΄λ₯Ό μν μ 보λ TCP header μ field λ‘ κ΅¬μ±λμ΄ μλ€.
- TCP κ° μ 곡νλ κΈ°λ₯μ΄ reliable ν κ² λ§κ³ λ λ§κΈ° λλ¬Έμ header μ λ€μ΄κ°λ μ λ³΄κ° λ§μ μ λ°μ μλ€.
- Performance of Rdt 3.0
- μ°λ¦¬κ° λ§λ Rdt 3.0 νλ‘ν μ½μ λ무 λ¨μνλ€. ν λ²μ 1κ°μ packet λ§ λ³΄λ΄κ³ κ²°κ³Όλ₯Ό νμΈνλ μμ΄κΈ° λλ¬Έμ κ²°κ³Όλ₯Ό λ°μ λκΉμ§ μ무κ²λ νμ§ μλλ€.
- Performance of Rdt 3.0
- μ€μ μ±λ₯μ 보면, μ¬μ©ν μ μμ μ λλ μλλ€.
- μ 체 μκ° μ€μμ sender κ° network λ₯Ό μ¬μ©νλ λΉμ¨μ΄ ν΄μλ‘ μ’λ€.
- T (transmit) = L (packet length in bits) / R (transmission rate, bps)
- U (sender utilization) = ( L / R ) / ( RoundTurnTime + L / R )
- μ΄λ₯Ό κ³μ°νλ©΄ 1% λ μλλ€. λ무λ λΉν¨μ¨μ .
- Pipeline protocols
- ν λ²μ μ¬λ¬ κ°μ packets μ 보λ΄κ³ μ΄μ λν κ²°κ³Όλ₯Ό λ°λ λ°©μμΌλ‘ μ§νλλ€.
- μ΄λ κ² λλ©΄ feedback, sequence number κ΄λ¦¬κ° 볡μ‘ν΄μ§λ€.
- μ€μ λ‘ μ¬μ©νλ νλ‘ν μ½μ λΉμ°ν pipelining μ νκ³ μλ€.
- Two generic forms of pipelined protocols: go-Back-N, selective repeat
- Transport μλ layers μ λΌμ°ν° μ¬μ΄μ ν΅μ μ μ¬μ€ unreliable ν νκ²½μ΄λ€.
-
Go-Back-N
- Sender
- window size κ° ν λ²μ λ³΄λΌ μ μλ packet μ μ
- κ°κ° packet μ λνμ¬ timer κ° λ¬λ € μλ€. feedback λ°κΈ° μ μ (ACK λ₯Ό λ°κΈ° μ μ) timeout μ λλ¬νλ©΄ window μμ λ€μ΄μλ λ³ΈμΈ λ³΄λ€ ν° packet μ ν¬ν¨νμ¬ λͺ¨λ λ€ μ¬μ μ‘.
- ACK(n): cumulative ACK.
- ex) ACK(11): 11 λ²μ§ΈκΉμ§ packet μ μ μ μ‘ λ°μλ€λ μλ―Έ. 12 λ²μ§Έ packet μ κΈ°λ€λ¦¬κ³ μλ€λ μλ―Έ.
- Receiver
- receiver μ buffer λ μκ³ λ¨μν μμ μ΄ λ°μμΌ ν sequence number λ§ κΈ°λ€λ¦°λ€.
- PKT(0) μ΄ λλ¬νλ©΄ μ΄λ₯Ό Application layer μ λκ²¨μ£Όκ³ ACK(0) μ μ μ‘νκ³ μ΄μ 1 λ²μ§Έ PKTμ κΈ°λ€λ¦°λ€.
- λ§μ½ PKT(1) λ³΄λ€ PKT(2) κ° λ¨Όμ λμ°©νλ©΄ μνλ κ² μλλ―λ‘ ACK(0) μ μ μ‘νλ€.
- PKT(1) μ΄ μ€λ©΄ ACK(1) μ 보λ΄κ³ μ΄μ 2 λ²μ§Έ PKTμ κΈ°λ€λ¦°λ€.
- GBN in action (window size = 4 μΌ κ²½μ°)
- PKT0 ~ PKT3 κΉμ§λ₯Ό Sender κ° μ μ‘νκ³ Receiver κ° PKT0, PKT1 μ μ λ°μμΌλ PKT2 κ° loss λ κ²½μ° PKT3 μ discard νκ³ ACK1 μ μ μ‘νλ€.
- Sender μ PKT3 κΉμ§ μ μ‘ν μ΄ν wait μνλ‘ μλ€.
- PKT0, PKT1 μ μ μ μ‘λμμΌλ―λ‘ λ μ΄μ window λ΄μ μμ νμκ° μλ€.
- λ€μ PCK4, PCK5 μ μ μ‘νμ§λ§ Receiver μ κ³μ PCK2 μ κΈ°λ€λ¦¬κ³ μμΌλ―λ‘ PCK4, PCK5 λ λ°μ§ μλλ€.
- PCK2 μ Timer λ ACK μ΄ μ λ¬λ°μ§ μμ§ λͺ»νμμΌλ―λ‘ μ‘°λ§κ° Timer κ° timeout μ λλ¬νλ€.
- PCK2 λΆν° λͺ¨λ μ¬μ μ‘ (PCK2 ~ PCK5)
- Receiver μ PCK2 λ₯Ό λ°μμΌλ―λ‘ ACK2 λ₯Ό 보λΈλ€.
- Send, Receive μ¬μ΄μ loss λ μκ³ error λ μκ³ timeout λ μλ€λ©΄ window κ° μ μ§νλλ€.
- μ¦, κ³μ μ§νμ΄ λλ€κ° (Go) μ μ€ μν©μ΄ λ°μνμ¬ timeout μ΄ λ°μνλ©΄ window size N λ§νΌ λμμμ (N back) μ¬μ μ‘νκ³ λ€μ Go.
- Sender λ, window μμ λ€μ΄μλ packet μ buffer μ λ€κ³ μμ΄μΌ νλ€. μλλ©΄ window μμ μλ packet μ μμ§ receiver κ° λ°μλμ§ μ λ°μλμ§ νμ νμ§ λͺ»ν μν©μ΄κΈ° λλ¬Έμ΄λ€.
- λ¨μ μ 1κ°κ° μ μ€λμλλ° window size N λ§νΌμ΄ λ€μ 보λ΄μ ΈμΌ νλ€.
- Sender
-
Selective Repeat
- Selective νκ² repeat νλ λ°©μ
- μ΄μ λ ACK κ° cumulative νλ©΄ μλλ€. λ§μ½ ACK11 μ΄λΌλ©΄ PKT11 μ μ λ°μλ€λ μλ―Έλ‘ λ΄μΌ νλ€.
- λ°λΌμ Receiver κ° μμ μ΄ κΈ°λ€λ¦¬κ³ μμ§ μλ PKT λ₯Ό λ°λλΌλ μ΄λ₯Ό μ μ₯ν μ μλλ‘ Receiver μΈ‘μ Buffer κ° νμνλ€.
- Sender μ ACK μ μ λ¬ λ°μΌλ©΄ ν΄λΉ PKT μ Timer μ ν΄μ νλ€.
- Timer κ° ν΄μ λμ§ μμ PKT λ Timeout μ λλ¬νκ³ Sender λ μ΄λ₯Ό λ€μ μ¬μ μ‘νλ€.
- μ¬μ μ‘λ PKT λ₯Ό λ°μ Receiver κ° Buffer μ μ μ₯νκ³ ACK λ₯Ό 보λΈλ€.
- Dilemma
- Sequence number κ° κ³μ λμ΄λλ©΄ header κ° κ³μ 컀μ§λ―λ‘ μ’μ§ μλ€.
- κ·ΈλΌ μ΄λ»κ² μ΅μνμ λ²μλ‘ μ¬μ©ν μ μμκΉ?
- window size = 3 μ΄λ©΄ sequence number κ°μλ? 4κ°λ‘ ν΄λ³΄μ.
- PKT μμ: 0 1 2 3 0 1 2 3 0 1 2 3
- sender κ° 0 1 2 λ₯Ό ν λ²μ λ³΄λΌ μ μλ€. κ·Έλ°λ° Receiver κ° μ΄λ₯Ό λͺ¨λ μ λ¬ λ°μκ³ ACK λ₯Ό μ μ‘νλ κ³Όμ μμ ACK0 ACK1 ACK2 κ° λͺ¨λ μ μ€λμλ€κ³ νλ©΄, Sender μ PKT0 PKT1 PKT2 μ Timer κ° λͺ¨λ timeout λμ΄ 0 λΆν° λ€μ μ¬μ μ‘μ νλ€.
- Receiver λ μ΄λ―Έ 0 ~ 2 κΉμ§λ μ λ¬ λ°μκΈ° λλ¬Έμ 3 μ κΈ°λ€λ¦¬κ³ μλ μν©μ΄κ³ μ¬μ μ‘λ 0 ~ 2 κ° 3 λ² λ€μμΌλ‘ λ€μ΄μ¨ PKT μ΄λΌκ³ μκ°νμ¬ μ΄λ₯Ό Buffer μ μ μ₯νλ€. κ·Έλ°λ° μ¬μ€ μ΄λ Duplicated pkt μ΄λ€.
- λ°λΌμ window size = N μΌ λ buffer ν¬κΈ°κ° N + 1 μ΄λ©΄ λ¬Έμ κ° μκΈ΄λ€.
- sequence number λ²μλ₯Ό λ리면 ν΄κ²°μ΄ λμ§λ§ κ·ΈλΌ μλ‘μ΄ packet κ³Ό duplicate packet μ ꡬλΆν μ μλ μ΅μμ λ²μλ μΌλ§μΌκΉ?
- λͺ¨λ packet μ timer μ λ¬μμΌ νλ λ¨μ .
- λμμ μνλλ process κ°μκ° λ§€μ° λ§μλ° λͺ¨λ TCP connection μ κ°μ§κ³ μκ³ μ΄κ² λͺ¨λ timer μ κ°μ§κ³ μλ€λ©΄ μ€μ λ‘ μ μ©μ΄ μ΄λ €μ.
- Selective νκ² repeat νλ λ°©μ
-
볡μ΅
- Application layer (message)
- Transport layer - TCP (segment): segment = header (meta data) + data (message)
- Network layer - IP (packet): packet = header + data (segment)
- Link layer: frame = header + data (packet)
-
Connection-Oriented transport: TCP
-
Overview
- point-to-point: one sender, one receiver. ν μμ sockets (1 κ°μ socket κ³Ό 1 κ°μ socket) κ° ν΅μ μ μ± μμ§λ€. process 1κ°μ socket μ΄ μ¬λ¬κ° μμ μ μλλ° μ΄ μ€μμλ 1 κ°μ socket μ 1κ°μ socket μ ν΅μ .
- reliable, in order byte stream: μ μ€λμ§ μκ³ μμλλ‘
- pipelined: window size λ₯Ό μ€μ νμ¬ μ¬μ©
- send & receive buffers: sender μ΄λ©΄μ receiver. sender buffer μ μ¬μ μ‘νκΈ° μν΄μ. receive buffer μ out of order λ‘ λ€μ΄μ¨ λ°μ΄ν°λ₯Ό μμλλ‘ μ μ₯νκΈ° μν΄.
- full duplex data: λ°μ΄ν°κ° μλ°©ν₯μΌλ‘ μ§νλλ€. μ¦ sender λ§ νλ server κ° μλκ² μλλΌ sender μ΄λ©΄μ receiver μ΄λΌλ μλ―Έ.
- connection-oriented: handshaking
- flow controlled: receiver μ μν λ₯λ ₯μ λ§κ² 보λ΄μ£Όμ΄μΌ νλ€.
- λ΄λΆ λ€νΈμν¬ μν©μ΄ λ°μλ€μΌ μ μλ λ§νΌλ§
-
TCP Segment Structure - header
- source port number (16 bits), destination port number (16 bits)
- sequence number (32 bits)
- acknowledgement number (32 bits)
- receive window (16 bits): receive buffer μ μΌλ§νΌμ μ¬μ κ° μλμ§ μλ €μ£ΌκΈ° μν
- checksum (16 bits): μ μ‘λλ λμ μλ¬κ° λ°μνλμ§ νμΈνκΈ° μν μ©λ
-
TCP sequence number's and ACKs
- Host A μ Host B κ° μλ μν©μμ 'C' character 1 byte μ 보λ΄κ³ μ νλ€. (μ μ‘κ³μΈ΅2 16:15)
-
Reliable Data Transfer
-
Flow control
-
Connection management
-