티스토리 뷰
▣Application Layer
: 주 서적(제가 수강하고 있는 서적) : 공부하다가 참고할 서적(참고 안할 수도 있음)
[목차]
1. Computer Networks and the Internet
2. ApplicationLayer
3. TCP/IP
4. Network Layer and Routing
5. Link Layer and Local Area Networks
6. Multimedia Networking
7. Security in Computer Networks
8. Network Management
2 네트워크 애플리케이션 생성
- 애플리케이션
: 서로 다른 종단에서 실행되어지는 end-system
: 네트워크를 통해 통신이 이루어진다.
- 네트워크 코어 장비를 위해 또다른 소프트웨어를 필요로 하지 않는다.
: 네트워크 코어는 사용자 애플리케이션을 실행하지 않음 -> end-system의 애플리케이션을 빠르게 개발하고 전파 가능.
2.1네트워크 애플리케이션의 원리
2.1.1 네트워크 애플리케이션 구조
- 애플리케이션의 구조 : 다양한 end-system에서 어떻게 개발자가 설계한 애플리케이션들이 조직되어야하는지를 지시
1) client-server 구조
2) pear to pear 구조(p2p)
3) 혼합 구조(hybrid)
2.1.1.1 Client-Server 구조
- Server
: 항상 켜져있는 호스트로 서비스를 제공하는 주체가 된다.
: 고정 IP를 사용한다.
: 데이터 센터로 확장되어질 수 있다.
- Client
: 서버와 통신을 하게 된다 -> 서버에 서비스를 요청
: 클라이언트들 간 직접 통신하지 않는다 -> 서버를 거쳐서 통신이 이루어진다.
: 유동 IP를 갖을 수 있다.
: 간헐적으로 통신한다.(Client의 필요에 따라 이루어진다)
2.1.1.2 Pear to Pear 구조
- 항상 켜져 있는 서버가 없다 -> 서버를 통해서만 통신이 이루어지지 않는다.
- 종단간에 직접적으로 통신이 이루어진다.
- 각 pear들은 각각 서비스를 요청하고 제공하게 된다.
->요청을 통해 받은 서비스를 다른 pear에게 서비스 제공할 수 있다. = 높은 self-scalability를 갖는다.
- 여러 pear간에 연결 됨으로서 관리가 어렵다.
2.1.2 애플리케이션이 필요한 transport service
1) data integrity : 신뢰할 수 있는 데이터를 전송(Reliable data transfer)
- 몇몇 app는 100신뢰도를 보장해야한다.
- 어느정도의 data loss를 인정할 수 있다. : ex) audio 혹은 video와 같은 app
2) throughput : 두 프로세스 간 통신 세션에 전달 할 수 있는 bits의 비율
- 몇몇 app는 최소한의 throughput을 요구한다. -> bandwidth-sensitive application이라고 함.
- 주어진 throughput을 최대한 활용한다. -> elastic application
3) timing : 시간을 보장하는가(timing guarantee)
- 특정시간 내 모든 bits의 전송을 보장.
4) security
- 애플리케이션에게 하나 이상의 보안 서비스를 제공
- 데이터를 암호화하고 데이터를 해독하여 수신 process에게 전달.
2.1.3 인터넷 transport Layer가 제공하는 service
1) TCP service
2) UDP service
-> TCP/UDP service는 프로토콜 서비스
2.1.3.1 TCP service
- reliable transport : 송수신간 데이터의 손실 없이 순서대로 데이터를 전송
- flow control : sender가 receiver 보다 더 빠르게 data를 전송하지 않는다.
(receiver의 수신속도에 맞춰 data를 보낸다)
- congestion control : 네트워크의 상태가 혼잡상태에 이르면 프로세스의 전송속도를 낮춘다.
(sender의 control를 통해 얻는다.)
- connection-oriented service : 클라이언트와 서버를 우선적으로 연결한 후에 데이터를 주고받는다.
->handshaking
- 제공하지 않는 서비스
: timing / minimum throughput / security
2.1.3.2 UDP service
- unreliable data transfer : 중간에 data loss가 발생할 수 있다.
(TCP와 다르게 receiver가 데이터를 받았는지 확인하지 않으며, loss하였어도 재전송을 요구하지 않는다)
- 비연결형 데이터 전송 : sender와 receiver를 미리 연결하지 않는다(handshaking이 없다)
대신, 속도면에서 이득이 있다.
- 제공하지 않는 서비스
: reliability, flow control, congestion control, timing, throughput guarantee, security
2.1.4 Processes communication
: process - 호스트에서 현재 실행중인 프로그램
-: 하나의 호스트내에 두개의 프로세스는 OS에서 정의한 IPC(inter-process communication)로 통신
-: 다른 호스트간의 프로세스는 message를 통해 통신한다.
: client와 server process
-: client process : 통신 초기화하는 프로세스
-: server process : client로부터의 접속을 기다리는 프로세스
:: p2p구조의 애플리케이션들은 위 두 프로세스를 갖는다.
2.1.5 Socket
: process는 socket을 통해 네트워크로 message를 송수신한다.
즉, 호스트의 application layer와 transport layer간의 Interface.(API)
2.1.6 Addressing processes
: messages를 receive하기 위해서는 process는 identifier를 가져야한다.
여기서 identifier -> 프로세스의 하나의 주소
identifier = IP 주소 + port번호
2.1.7 App-layer protocol defines
: 애플리케이션의 프로토콜 = 교환되는 메시지의 타입 + 여러 메시지 타임의 문법(syntax) + 메시지의 의미(message semantics)
+ 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지를 결정하는 규칙
: 오픈 프로토콜 - RFC(request for comments)로 정의
- 상호작용 허용
: 독점적 프로토콜 -ex)Skype
2.2 Web and HTTP
: web page는 object들로 구성
: object는 하나의 file
: web page = base HTML-file + several referenced objects
: 각 object는 URL로 지정 = host name+path name
2.2.1 HTTP Overview
: HTTP(HyperText Transfer Protocol) - web의 app-layer 프로토콜
: Server-Client 모델
- 클라이언트는 웹 객체들을 server에 요청하고 받은후 display하는 browser
- server는 web object를 가지고 있다 요청에 보내주는 web server
: TCP를 이용
1) client는 80번(HTTP에 지정된 port번호) port로 server에게 연결을 요청
2) server는 client의 요청을 수락
3) browser(http client)와 web server(HTTP server) 사이에 HTTP message를 교환
4) 연결을 종료한다.
: HTTP는 stateless protocol
- client와의 과거 요청에 대한 정보를 유지 하지 않는다.
<-> statefull protocol : 똑같은 쿼리에 항상 같은 대답을 한다.
[state를 유지하는 프로토콜은 복잡하다]
-> 과거의 기록(state)를 유지, 관리해야하기 때문.
-> 서버나 클라이언트중 하나가 깨진 경우 각각의 상태는 불일치 함으로써 조정이 필요
2.2.2 HTTP connection
: 2가지 연결 방식 존재
1) Non-persistent connection
2) Persistent connection
2.2.2.1 Non-persistent connection
- 하나의 Object만을 TCP연결로 보낸다. -> 이후, 닫힌다.
- 다수의 Object를 전송하기 위해서는 다수의 connection을 필요로 한다.
: 단점 - 하나의 객체당 2 RTT 필요
- 각 TCP를 연결하기 위해서 OS의 overhead발생
- 브라우저는 참조객체를 가져오기 위해 병렬 TCP 연결 시도.
: 장점 - 데이터를 전송할 때만 연결을 하므로 추가적인 리소스 낭비가 없다.
example) 10개의 object를 보낸다고 가정.
- RTT : client에서 송신된 작은 패킷이 server까지 간 후 다시 client로 되돌아 오는데 걸린 시간.
- HTML파일 요청 응답시간
: TCP연결을 초기화 하기 위하 1RTT
: HTTP요청을 하고 HTTP 응답을 받기 위해 필요한 1RTT
: 파일 전송 시간
즉, Response time = 2RTT + file transmit time
2.2.2.2 Persistent connection
- 한번의 TCP연결을 통해 여러 Object를 주고 받는다.
: 단점 - 연결 상태를 유지하기 때문에 리소스 낭비가 일어난다.
: 장점 - 모든 참조 객체들에 대해 1RTT만 필요
- 객체를 참조하자 마자 요청 송신.
2.2.3 User-server state : cookies
: 대부분의 web-site 들은 cookies를 이용하여 user의 state를 추적하고 유지
(모든 data를 유지하는 것은 아님)
- 4가지 구성요소
1) HTTP response message의 cookie header-line
2) HTTP request message의 cookie header-line
3) user's host에 저장되어 관리되는 cookie file
4) web-site의 back-end database
2.2.4 cookie의 활용
1) 사용자 식별(id저장같은 기능)
2) 쇼핑 카트(오늘 본 상품 같은 기능)
3) 제품 추천
4) 사용자의 세션 상태
2.2.4 state 유지
: protocol endpoint - sender와 receiver의 다 수의 전송들의 상태를 유지
: cookie - http message가 state를 전달함.
-> cookie와 privacy
: cookie와 계정정보가 결합 될 경우
: 상용자의 정보를 노출
2.2.5 web Cache
: 목적 - 본래의 서보를 포함하지 않고 클라이엌트의 요청을 만족시키는 것.
: origin server를 대신하여 HTTP 요구를 충족 시켜주는 네트워크 개체 -> proxy server라고도 함
: 브라우저는 웹캐시와 연결을 설정하고 웹캐시에 HTTP요청을 전송
- 장점
: 요청에 대한 응답 시간을 줄일 수 있다.
: 접속 회선상의 웹 트래픽을 줄일 수 있다(빠른 다운로딩)
: 직접적인 주소를 알수 없어 공격하기가 힘들다.
2.3 FTP
: 파일을 전송하기 위한 규약으로 TCP에서 사용되어진다.
: 클라이언트 /서버 모델로 클라이어트는 전송을 시작하는 측이고 서버는 원격 호스트로 작용한다.
: ftp 표준 - RFC 959
ftp server - port 21(control connection → out of band) / port 20(data connection)
2.3.1 sepearate control, data connection
: 제어연결과 데이터 연결을 두개의 TCP연결을 통해 사용한다.
- control connection
: 포트번호 21로 제어연결을 설정한다.
: 제어 연결을 통해 사용자 계정과 비밀번호를 전송한다.
: 제어연결은 사용자 세션동안 상태를 유지한다.
: 별도의 제어연결을 out-of-band라고 한다.
- data connection
: 서버는 클라이언트의 파일 전송명령을 받으면 TCP데이터 연결을 개통한다.
: 한파일 전송 후 서버는 데이터 연결을 닫는다.(비지속)
: 다른 파일 전송시 다른 TCP연결을 개통한다.
2.4 Electronic mail
: 3개의 주요요소(user agent/mail server/SMTP)
: mail servers가 하는 3가지
- 받은 메시지를 유지하고 관리하는 메일박스
- 보내는 메시지의 큐(메일 저장소)
- 메일 서버간의 SMTP 프로토콜
: 클라이언트 - 보내는 메일 서버
: 서버 - 받는 메일 서버
-----------------추후 이어서 작성--------------------
'Network > Theory' 카테고리의 다른 글
09)Internet Network Layer(Network Layer) (0) | 2017.11.28 |
---|---|
08)Router architecture(Network Layer) (1) | 2017.11.27 |
07)Connection, connection-less service(Network Layer) (0) | 2017.11.27 |
06)Connection Setup(Network Layer) (0) | 2017.11.27 |
05)Routing, Forwarding(Network Layer) (0) | 2017.11.24 |