client와 server 간에 데이터를 주고받는 방식으로 client는 데이터를 요청하여 받고, server는 데이터를 보낸다.
Server
Client
ex) HTTP, IMAP, FTP
Peers(end systems)끼리 직접 연결을 통해 데이터를 주고 받는다.
ex) P2P file sharing, Skype
Process는 호스트에서 안에서 동작하는 프로그램이다. 하나의 호스트에서 다수의 Process가 동작할 수 있다. 동일한 호스트의 Process끼리의 통신은 OS에서 inter-process communication를 관리한다. 서로 다른 Process끼리의 통신은 message의 교환을 통해 이루어진다.
Process는 client process, server process로 나뉘어진다.
P2P application은 클라이언트 역할과 서버 역할 둘 다 수행하기 때문에 client process, server process 두 가지 모두 가지고 있다.
프로세스 간의 통신은 Soket을 통해 이루어지게 된다.
Soket은 application layer와 transport layer 사이에 있는 interface이다. process에서 message를 socket을 통해 transport layer에 전달하면 message는 destination host에 도착하게 된다.
목적지 호스트 프로세스에서 message를 수신하기 위해서는 identifier(식별자)를 가지고 있어야 한다.
대표적인 식별자는 32bit의 IP주소이다. 그렇다면 IP주소만 가지고 프로세스에게 전달할 수 있을까? 불가능하다. IP주소만을 가지고서는 목적지 호스트에 도달하는 것 까지만 가능하다. 같은 호스트에는 여러 프로세스가 동작하고 있기 때문에 프로세스를 구분하는 식별자가 필요하다.
이를 구분하는 식별자가 16bit의 포트번호이다. 대표적인 포트번호로는 HTTP server : 80, mail server : 25가 있다. 0 ~ 1023 까지의 포트번호는 이미 정해져 있고 나머지 번호를 사용하게 된다.
예를 들어, 민수에게 편지를 보낸다면 IP주소는 민수의 집 주소인 것이고 포트 번호는 민수네 가족들 중에서 민수를 뜻한다. IP 주소를 통해 호스트를, 포트 번호를 통해 process를 구별한다.
application 마다 transport service에 요구사항이 다르다
1. TCP service :
timing, mininum throughput guarantee, security는 제공하지 않는다.
2. UDP service :
reliability, flow control, congestion control, timing, throughput guarantee, security, or connection setup을 제공하지 않는다.
많은 것을 제공하지 않는 UDP Service를 사용하는 이유가 무엇일까?
가볍다
ex) 테스트 파일을 보내는데 연결 설정하여 flow control, congestion control 까지 할 이유가 없다
application에서 기능을 제작하고 느린 TCP를 사용하지 않고 UDP를 사용하는 경우
일반 TCP & UDP 소켓은 암호화를 시키지 않는다. 따라서, password를 TCP를 통해 보내게 되면 타인이 볼 수 있게 된다. 그래서 등장하게 된 것이 Transport Layer Security (TLS) 이다. TLS는 정보를 암호화하여 송수신하는 프로토콜이다. TLS를 사용하여 암호화된 연결을 하는 HTTP를 HTTPS이다. TLS는 app으로부터 message를 받아 소켓으로 전달한다.
Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson