networkd application 을 개발을 위해서는 network 를 통해 서로 의사소통하고 서로 다른 end system 에서 작동하는 프로그램을 만들어야 한다. network 의 layering 으로 인해 우리는 network core device 를 작동시키는 소프트웨어를 만들 필요가 없고, network core device 는 user application 을 사용할 수 없다.
Network Application Architecture
application architecture 에는 Client-Server architecture 와 P2P architecture 가 있다.
Client-Server architecture 는 다음과 같은 특징들을 가진다.
- server 는 always-on host 이고, permanent IP address 를 가지며, scaling 을 위해 data center 를 사용
- clinet 는 server와 communication 하고, dynamic IP address 를 가지며, client 끼리는 직접적으로 communication 하지 않음
P2P architecture 는 다음과 같은 특징들을 가진다.
- no always-on server
- 임의의 end system 들끼리 직접적으로 communication 하므로 cost effective
- self-scalability
- decenterlized structure 이므로 security, performance, reliability 에서 단점이 존재
Process Communicating
end system 에서 작동하는 program 을 process 라고 한다. 서로 다른 end system 에 있는 process 들은 네트워크를 통해 message 를 교환하여 communication 한다. communicaiton 을 시작하는 process 를 client process, 접촉을 기다리는 process 를 server process 라고 하는데, P2P architecture 에도 client process 와 server process 가 존재한다.
process 는 socket 이라는 software interface 를 통해 message 를 주고받는다. socket 은 application layer 와 transport layer 사이의 interface, 혹은 API 이다. socket 을 사용하여 application 을 개발하면 선택한 protocol 에 따른 transport-layer service 를 사용해 application 이 만들어진다.
process 간 통신을 위해 identifier 를 사용한다. identifier 에는 host 를 식별하는 IP address 와 host 의 process 와 연관된 port number 가 있다.
Transport Service
application 이 필요한 transport service 에는 data integrity(reliable data transfer), throughput, timing, security 가 있다.
Data Integrity
어떠한 application 들은 reliable data transfer 이 보장되어야 한다. 이때 reliabe data tranfer 란 no loss, no delay, in-order delivery 를 의미한다. reliable data trafer 를 보장하지 않으면 data loss 가 발생하게 되는데, audio 나 video 같은 application 들은 일부 loss 를 견딜 수 있다. 이러한 application 은 loss-tolerant applicaiton 이라고 한다.
Throughput
multimedia 와 같은 application 들은 효율적이기 위해 특정 throughput 이 요구되고 이러한 application 을 bandwidth-sensitive application 이라고 한다. 반면 어떠한 application 들은 사용할 수 있는 throughput 만 사용하는데, 이러한 application 을 elastic application 이라고 한다.
Timing
interactive real-time application 들은 low delay 를 요구해 timing 이 보장되어야 하는 반면, non-real-time application 들은 low delay 를 선호하지만 크게 delay 에 대해 제약이 없다.
Security
transport protocol 은 security service 를 제공한다.
Internet Transport Service
Internet 은 TCP 와 UDP 라는 두 가지 transport service 를 제공한다.
TCP service
- Connection-oriented : client process 와 server process 사이에 setup(handshake) 이 필요함. setup 이후에는 socket 사이에 TCP connection 이 존재한다고 함.
- Reliable data transfer (no delay, no loss, in-order)
- flow control
- congestion control
- do not provide : timing, minimum throughput guarantee, security
UDP service
- Connectionless : client process 와 server process 사이에 setup 이 필요없음
- Unreliable data transfer
- do not provide : reliability, flow control, congestion control, throughput guarantee, security, or connection setup
이러한 UDP 의 단점에도 streaming 처럼 UDP 를 반드시 써야하는 application 들이 존재한다.
Securing TCP
TCP 와 UDP 는 기본적으로 encryption 을 제공하지 않는다. 따라서 cleartext password 가 socket 으로 보내져 internet 을 순회하게 된다.
internet community 는 security issue 를 해결하기 위해 SSL(Secure Sockets Layer) 를 개발했다. SSL 은 암호화된 TCP connection 을 제공하고 data integrity, end-point authentication 을 보장한다. application 이 SSL 을 사용하면 cleartext 는 SSL 로 보내져 암호화 되고, 암호화된 데이터는 TCP socket 으로 보내져 Internet 을 순회하게 된다.
참조
Computer Networking _ A Top Down Approach, 7th, converted
'COMPUTER SCIENCE > Network' 카테고리의 다른 글
[Network] Application Layer - Electronic Mail (0) | 2022.11.21 |
---|---|
[Network] Application Layer - Web and HTTP (2) | 2022.11.15 |
[Network] Protocol Layers (0) | 2022.11.06 |
[Network] Components of a Computer Network (0) | 2022.11.06 |
[Network] What is the Internet? (0) | 2022.11.05 |
댓글