Application Layer
Application architectures
- Client-Server
- Peer-to-Peer(P2P)
Client-Server architecture
- Server
- always-on host
- 영구 IP 주소
- 규모에 따라 데이터 센터일 수도 있음
- Clients
- Server와 커뮤니케이션
- 클라이언트 간 직접 커뮤니케이션 하지 못함
- 간헐적으로 연결
- 동적 IP 주소를 가질 수 있음
P2P architecture
- no always-on server
- host들이 자발적으로 직접 커뮤니케이션 -> Self scalability
- peer는 다른 peer에게 서비스를 요청하고, 또 다른 peer에게 서비스를 제공할 수 있음
- peer들은 간헐적으로 연결되며, IP 주소를 바꿈
Process communicating
- process: host 내에서 실행 중인 프로그램
- 서로 다른 프로세스가 같은 host에서 실행 중이라면, IPC(Inter Process Communication)을 이용하여 통신
- 서로 다른 프로세스가 다른 host에서 실행 중이라면, Messages를 교환하며 통신
- Client process: 통신을 시작하는 프로세스
- Server process: 다른 프로세스의 연결을 기다리는 프로세스
Sockets
- 프로세스는 메시지를 socket으로부터 받거나, socket으로 전송
Addressing processes
- message를 전달받기 위해서 프로세스는 반드시 identifier를 지녀야 함
- identifer는 IP 주소와 포트 번호를 포함
- ex) HTTP Server은 80번 포트 번호 사용, mail server는 25번 포트 번호 사용
App-layer protocol defines
-
message type
-
message syntax
- 어떤 필드값이 있어야 하며, 필드 값들이 어떻게 채워져야 하는지
-
message semantics
- 언제 그리고 어떻게 프로세스들이 메시지를 전송하고, 응답하는지에 대한 rules
Application에 필요한 전송 서비스
-
Data integrity
- 어떤 app들은 100% 신뢰 가능한 데이터 전송을 요구(ex: file transfer)
- 반면, 어떤 app들은 약간의 손실을 허용(ex: audio)
-
timing
- 어떤 app들은 낮은 지연율을 요함(ex: interactive games)
- throughput
-
security
Internet transport protocols services
-
TCP service
- 신뢰성 있는 전송
- flow control
- congestion control
- connection-oriented
- does not provide: timing, minimum throughput guarantee, security
-
UDP service
- 비신뢰성 전송
- does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, connection set-up
SSL
- 암호화된 TCP 연결을 제공
- data integrity
- end-point authentication
- SSL is at app layer
- app들은 TCP와 대화하는 SSL 라이브러리를 사용
Web and HTTP
HTTP overview
- HTTP: HyperText Transfer Protocol
- Web의 application layer protocol
- Client-Server 모델
- Client: Web object들을 요청하고, 받고 화면에 보여주는 browser
- Server: 요청에 대한 응답으로 object를 보내는 Web server
- uses TCP
- 클라이언트가 80번 포트 번호를 이용하여 서버에 TCP 연결 시작
- 서버는 클라이언트의 TCP 연결 승인
- HTTP messages들이 browser와 Web server 간 교환
- TCP 연결 종료
- HTTP is "stateless(무상태)"
- 서버는 이전 클라이언트 요청에 대한 어떠한 정보도 저장하지 않음
HTTP connections
- non-persistent HTTP
- 최대 하나의 object가 TCP 연결 통해 전송 가능
- 여러 개의 object를 download하기 위해선 여러 번의 연결이 필요
- persistent HTTP
- 여러 개의 object가 하나의 TCP 연결을 통해 전송 가능
Response Time
-
RTT: time for a small packet to travel from client to server and back
- Non-persistent HTTP
- TCP 연결 시작하기 위한 RTT +
- HTTP request 위한 RTT +
- file transmission time =
- 2 RTT + file transmission time
- Persistent HTTP
- 서버는 연결을 open 상태로 둠
- 모든 object를 받기 위해 하나의 RTT만 필요
HTTP request message
- 2개의 HTTP 메시지 타입: request, response
Uploading form input
- POST method
- Web page는 종종 input form을 포함
- input이 server에 업로드 됨
- URL method
Method types
- HTTP/1.0:
- HTTP/1.1:
- GET, POST, HEAD
- PUT: URL 필드에 지정된 경로에 파일 업로드
- DELETE: 특정 URL 필드에 명시된 파일을 삭제
HTTP response message
- status code
- 200 OK: request 성공, 요청된 object가 이후에 이 msg에 포함될 것
- 301 Moved Permanently: 요청된 object가 이동함, 이후에 새로운 주소가 이 msg에 명시될 것
- 400 Bad Request: 서버가 요청 메시지를 처리하지 못함
- 404 Not Found: 요청된 문서가 이 서버에 존재하지 않음
- 505 HTTP Version Not Supported
User-Server state: cookies
- 많은 웹 사이트들이 쿠키를 사용
- four components
- cookie header line of HTTP response msg
- cookie header line in next HTTP request msg
- cookie file kept on user's host, managed by user's browser
- back-end database at Web site
Web caches (proxy server)
- Origin server를 거치지 않고 클라이언트의 요청을 만족하기 위해 사용
- browser가 모든 HTTP request를 cache로 보냄
- object가 cache에 있다면: cache returns object
- object가 cache에 없다면: cache가 origin server에 object request 후, client에게 return
Conditional GET
- 목표
- 만약 cache가 최신의 cached version을 가지고 있으면 object를 전송하지 않음
- no object transmission delay
- lower link utilization
- cache: HTTP request에 cached copy의 날짜를 명시
- server: 만약 cached copy가 최신의 것이면 response는 object를 포함시키지 않음
FTP(File Transfer Protocol)
- file을 remote host로/로부터 transfer
- Client-Server model
- client: side that initiates transfer
- server: remote host
- 하나의 file 전송 이후에 서버는 data connection 종료
- 서버는 다른 file의 전송을 위해서 다른 TCP data connection을 open
- FTP Server는 'state'를 유지
- current directory, earlier authentication
E-mail
- Three major components
- user agents
- mail servers
- SMTP(Simple Mail Transfer Protocol)
- User Agent(mail reader)
- composing, editing, reading mail messages
- outgoing, incoming messages stored on server
- Mail Servers
- mailbox는 user에게 온 messages들을 저장
- message queue는 전송되야 할 mail messages들 담음
- email messages의 전송을 위한 mail servers들간의 SMTP
SMTP
- reliable transfer를 위해 TCP 사용(25번 포트 번호)
- direct transfer: sending server to receiving server
- Three phases of transfer
- handshaking
- transfer of messages
- closure
- persistent한 연결 사용
- message가 7-bit ASCII로 작성되어야 함
POP3 Protocol
-
authorization phase
- client commands:
- user: declare username
- pass: password
- server responses:
-
transaction phase
- list: list message numbers
- retr: retrieve message by number
- dele: delete
- quit
- POP3 is stateless across sessions
DNS(Domain Name System)
- IP 주소 대신 'name'을 사용하여 주소에 접근이 가능하게 함
- 분산된 database가 많은 name server들의 계층을 구현
- DNS services
- hostname to IP addr translation
- host aliasing
- mail server aliasing
- load distribution: 하나의 이름에 많은 IP 주소 설정 가능
- Why not centralize DNS?
- traffic volume
- distant centralized database
- maintenance
DNS: root name servers
- local name server가 name을 처리하지 못할 때 접근하는 서버
- name과 주소의 mapping을 TLD로부터 얻어와 local name server에 return
- 전 세계적으로 13개의 root name server 존재
TLD, authoritative servers
- Top-Level Domain servers:
- com, org, net, eud, areo, jobs, museums 등과 모든 국가 도메인들을 관리(ex: uk, kr, ca)
- authoritative DNS servers:
- 기관의 name host들에게 authoritative hostname to IP mapping을 제공하는 기관 소유의 DNS Server
- 기관 혹은 서비스 제공자에 의해 maintain
Local DNS name server
- 각각의 ISP는 'default name server'라고 불리는 local DNS server 지님
- host가 DNS query를 발생시키면, query는 local DNS server로 전송됨
- 최근 name-to-address translation 쌍을 local cache에 가지고 있음
- proxy와 같이 작동하여, query를 계층 구조로 이동시킴
- iterated query
DNS: caching, updating records
- name server가 mapping을 하면, 해당 mapping을 caching
- cache entry는 TTL 이후에 timeout
- TLD 서버는 기본적으로 local name server에 cache 되어 있음
- 그러므로 root name server는 많이 방문되지 않음
- cached entry들은 out-of-date인 것일 수 있음
만약 name host가 IP 주소를 바꿔도, 모든 TTL이 만료될 때 까지 다른 Server들은 해당 변경을 알 수 없음
Attacking DNS
- DDos attacks
- root server의 traffic을 폭주 시킴
- traffic filtering을 통해 예방 가능
- TLD server의 traffic 폭주시키는 것이 더 위험
- Redirect attcks
- Man-in-middle: query 가로채기
- DNS poisoning: DNS 서버에 위조 정보 전송