=== Application Layer ===
1. principles of network applications
Creating network app
-
write programs that
서로 다른 end system간에서 돌아가면서
네트워크로 메세지를 주고 받음
ex) browser을 이용해서 커뮤니케이션 하는 소프트웨어
-
no need to write software for network-core devices
user application을 동작시키지는 않지만 앱 개발과 데이터 송신이 되도록 하는 코어들
Application architectures
applications의 가능한 모델들
- Client to Server
- Server
여러 Client가 서버에 접속
항상 켜져 있는 host
영구적인 IP 주소
많은 클라이언트를 감당하기 위한 data center들
- Client
서버와 소통
클라이언트는 껏다 켰다할 수 있다.
다수의 IP 주소로 자주 바뀜
다른 클라이언트와 직접 통신은 불가능
서버특징
- 항상 켜져 있는 host
- 고정 IP 주소
- 확장성을 위해 데이터 센터에 서버가 위치함
클라이언트
- Peer to Peer
- 항상 켜져 있는 서버가 존재하지 않음
- 실재로는 항상 Peer 끼리만 통신하지 않음
- end system끼리 직접 통신
- 서비스를 주고 받는 관계(self-scalability : 요청도 늘어나지만 스스로도 서비스가 될 수 있어서 규모가 게속 커질 수 있다.)
- peer가 즉흥적으로 연결되고 IP가 바뀔 수도 있다.
- 한 peer가 종료되면 다른 peer에 연결하는 방법등을 사용해야 하기 때문에 management가 복잡해진다.
P2P
- 항상 켜져 있지는 않는다.
- end system끼리 직접 통신
- 스스로도 서비스가 될 수 있어서 규모가 게속 커질 수 있다
- peer가 즉흥적으로 연결되고 IP가 바뀔 수도 있다.
Processes Communicating
- process: host에서 작동하는 프로그램(메세지를 주고받는 주체는 process이다)
- 같은 host에서 두개의 process가 communication 할 수도 있다. 그때는 inter-process communication(IPC, OS에 의해 정의됨)를 사용한다.
- 서로 다른 프로세스의 경우는 네트워크를 통해서 message 전달해서 프로세스간의 의사소통을 한다.
- client-server architecture
- client process : communication을 시작한다.
- server process : 프로세스가 연결될때까지 대기
- P2P architecture
- process는 client인 동시에 server
process: host에서 작동하는 프로그램
os가 제공하는 inter-process communication을 이용해서 데이터를 주고받는다.
(중요)
- client process : communication을 시작한다.
- server process : 프로세스가 연결될때까지 대기
- P2P에서는 두개다 역활을 맡을 수 있다.
2. Sockets
메세지를 주고 받는 interface이다.
socket은 문과 같은 것이다.
어떤 application이 메세지를 주고 받을때 socket을 이용해서 주고 받는다.
application과 transport layer 사이의 interface이다.
이때 application을 제외한 아래 4계층은 OS에서 관리가 된다.
socket을 이용해서 주고 받는다.
Addressing processes
-
32-bit IP address(IPv4)의 호스트만의 주소가 존재
-
포트번호 16bit, 같은 호스트의 프로세스를 구분해주기 위함
-
포트번호 예시(well-known port number)
- HTTP server : 80
- mail server : 25
IP address(IPv4) : 32-bit 의 호스트만의 주소가 존재(IPv6 : 128bit)
포트번호 : 16bit, 같은 호스트의 프로세스를 구분해주기 위함
App-layer protocol defines
- 어떤 메세지를 주고 받는지
- 메세지 syntax
- 메세지 안에 어떤 field이고 어떻게 field들이 나뉘어 있는지
- 메세지 semantics
- 프로세스들이 언제 메세지를 보내고 어떻게 처리할지
- Open protocol을 쓸지 Proprietary(개인) protocol을 쓸지
- Open protocol을 쓰면 이미 내용이 공개되어 있어서 활용이 가능하다. 동시에 다른 사이트와도 통신이 가능하다.
app layer protocol 정의에서 필요한것
- typed of messages exchanged
- message syntax ; 메세지 안에 어떤 field이고 어떻게 field들이 나뉘어 있는지
- message semantics : 각각의 필드가 의미하는 바가 무엇인지
- rules : 프로세스들이 언제 메세지를 보내고 어떻게 처리할지
- Open protocol(RFC) / Prorietary(개인) protocol을 쓸지
What transport service does an app need?
transport Protocol은 어떤 것을 사용할지 결정해야 한다. (TCP, UDP)
- Data integrity(reliability)
TCP : 메세지를 서버쪽으로 보내면 100% 신뢰도 있게 보내준다.(파일 전송, 웹페이지 내용 가져오기), 속도가 느리다.
UDP : 메세지를 서버쪽으로 보내도 신뢰도가 없다, 속도가 빠르다.
이 아래의 것들은 TCP, UDP 모두 보장해주지 않는다.
-
Timing
딜레이가 작을 것을 보장한다.(Internet telephony, interactive games)
-
Throughput(처리량)
앱중에(multimedia) 굉장히 빠른속도로 throughput을 보장해주는 app이 필요할 수 있다.
다른 앱에는(elastic apps) throughput을 보장해줄 필요없는 앱도 존재
-
security
암호화, 데이터 무결성
(중요)
어떤 transport service를 사용해야 하는가?
-
Data integrity(reliability) : 모든 데이터가 다 정확히 받아저야 한다.
TCP : 메세지를 서버쪽으로 보내면 100% 신뢰도 있게 보내준다.
UDP : 메세지를 서버쪽으로 보내도 신뢰도가 없다, 속도가 빠르다.
-
Timing : 실시간성
-
Throughput(처리량) : multimedia application
-
security
Transport service requirements: common apps(앱별로 transport 서비스를 요구하는지)
중간의 elastic으로 적히어 있는것은 너무 늦게와도 문제가 생기지 않기 때문에 elastic(고무적)이라고 한다.
loss-tolerant는 데이터가 조금 날라가도 괜찮은 경우를 의미한다.
3. Internet transport protocols sevices
- TCP service
- reliable transport: realiable support
- flow control(
*
) : 전송하는 속도 조절 - 전송자는 수신자의 수신속도를 넘지 않음
- congestion control(
*
): 네트워크 과부하시 throttle(스로틀 : 네트워크 대역 제한)
- does not provide: timing, minimum throughput guarantee, security 지원 안함
- connection-oriented: 서버와 클라이언트간의 setup과정이 필요
- UDP service
- 그냥 최선을 다해서 데이터를 보내는 프로토콜
- unreliable data transfer between sending and receiving process
- does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, connection이 없다.
(중요)
TCP service의 특징
- reliable transport
- flow control(
*
)
- congestion control(
*
)
- does not provide: timing, minimum throughput guarantee, security 지원 안함
- connection-oriented
UDP service의 특징
- 그냥 최선을 다해서 데이터를 보내는 프로토콜
- unreliable data transfer
- does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, connection이 없다.
Internet apps: application, transport protocols
대다수가 TCP이다. UDP를 사용하는 경우도 존재
위의 표는 암기, 각 application이 어떤거 쓰는지 정도는 알아놓기
Securing TCP
- TCP & UDP
- no encryption
- clear text passwords sent into socket traverse Internet in clear text
security를 transport layer에서 제공해주기 위해서 나온 서비스
- SSL 기능
- provides encrypted TCP connection
- data integrity
- end-point authentication
- SSL은 Transport에 있지는 않고 app layer에 존재
- apps use SSL libraries that "talk" to TCP
- SSL sockets API
- clear text passwords sent into socket traverse Internet encrypted