Application Layer의 프로토콜은 다음의 정보들을 정의한다.


항상 켜져 있는 서버 없음(서버가 있긴 하지만 최소한의 작업만 한다)
엔드 시스템끼리 직접 통신한다. (서버 개입 없이 직접 파일 송수신)
피어는 다른 피어에게 서비스를 요청하고 다른 피어에게 서비스를 제공.
피어가 간헐적으로 연결되고 IP 주소가 변경.
복잡한 관리
예: P2P 파일 공유(토렌트)
실제 통신하는 것은 프로그램이 아니라, 실행되고 있는 프로그램인 프로세스이다.
한 호스트 여러 다양한 프로세스가 동시에 실행된다.
(이때 같은 호스트의 프로세스끼리의 통신은 os가 관리)
요청을 보내는 쪽의 프로세스를 보통 클라이언트라고 하고, 요청을 받는 쪽을 서버라고 한다.
(p2p에서는 클라이언트는 서버 프로세스가 될 수 있고, 클라이언트 프로세스도 될 수 있다.)
프로세스는
소켓(socket)을 통해 네트워크로 메시지를 보내고 받는다.
소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층간의 인터페이스다.(혹은 API)
전송 프로세스는 수신 프로세스의 소켓에 메시지를 전달하기 위해 문 반대편의 트랜스포트 인프라에 의존한다.

애플리케이션 개발자의 트랜스포트 계층에 대한 통제
트랜스포트 프로토콜을 선택
최대 버퍼와 최대 세크먼트 크기 같은 약간의 매개변수 설정
프로세스가 다른 프로세스로 패킷을 보내려면 수신 호스트의 IP 가 필요하다.
하지만 하나의 호스트에서는 여러 프로세스가 실행되는데, 이 프로세스를 구별하기 위해 port 번호를 사용한다.
HTTP SERVER: 80
mail SERVER: 25
어플리케이션의 종류는 여러 가지이다.
종류도 여러가지이므로 각 어플의 요구 조건 혹은 특성에 따라 필요한 transport 서비스도다를 것이다. 이 때 고려할수있는 것이 아래 4 가지 이다.
신뢰성(data integrity) 처리율(throughput)민감 애플리케이션이라 하고, 현존하는 많은 멀티미디어 애플리케이션은 대역폭에 민감하다.탄력적 애플리케이션(elastic apps)이라고 한다.시간보장(timing)보안(security)암호화할 수 있고, 수신 호스트에서 트랜스포트 프로토콜은 모두 해독할 수 있다.TCP를 애플리케이션 계층에서 강화하여 TLS로 보안 서비스를 제공한다.TSL
1. 암호화된 TCP 연결 제공:
• TLS는 TCP(Transmission Control Protocol) 위에서 작동하여 통신 데이터를 암호화합니다.
이를 통해 네트워크 상에서 전송되는 데이터가 도청되거나 변조되지 않도록 보호합니다. TLS는 인터넷에서 HTTPS(HTTP Secure)와 같은 보안 프로토콜을 제공하는 중요한 요소입니다.
2. 데이터 무결성:
• TLS는 데이터가 전송되는 동안 변경되지 않았음을 보장합니다.
데이터를 송신자가 전송한 그대로 수신자가 받을 수 있도록 확인하는 무결성 검사를 수행하여, 중간에서 데이터가 손상되거나 악의적으로 수정되는 것을 방지합니다.
3. 종단 간 인증:
• TLS는 통신하는 양쪽(클라이언트와 서버)이 서로 신뢰할 수 있는 존재인지를 확인하는 인증을 제공합니다.
주로 디지털 인증서를 사용하여 서버의 신원을 확인하고, 필요할 경우 클라이언트의 신원도 확인할 수 있습니다. 이로써 가짜 서버나 중간자 공격을 방지할 수 있습니다.

크게 TCP와 UDP 두가지가 있다.
UDP는 TCP의 최소한의 기능(에러체크, port넘버 구분)을 갖춘 것이고,
때문에 TCP가 보다 복잡하다.
reliable transport : 데이터 전송의 신뢰성 보장.
flow control : 순서 보장
congestion control : 네트워크 트래픽이 심한 상황
connection-oriented : 연결 지향형 서비스
TCP가 보장하지 않는 것들...
timing (데이터를 주고 받기 전에 연결을 하고 전송을 하기 때문에 늦다)최소 throuput (congestion시 전송속도를 보장하지 못함)unreliable transport : 데이터 전송 신뢰성 보장 X그럼에도 UDP를 종종 사용하는 것은 효율적 data통신이 가능하기 때문이다.
(TCP는 복잡해서 오버헤드 크고, 시간이 오래걸리고 헤더가 크고....)

| 특징 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결 지향적 (3-way handshake를 통한 연결 설정) | 비연결적 (연결 설정 없이 데이터 전송) |
| 신뢰성 | 신뢰성 보장 (재전송, 패킷 순서 보장) | 신뢰성 없음 (재전송 없음, 패킷 손실 가능) |
| 전송 속도 | 비교적 느림 (연결 설정 및 오류 처리 과정 포함) | 매우 빠름 (연결 설정 및 오류 처리 과정 없음) |
| 데이터 순서 | 데이터 순서 보장 (수신 측에서 패킷 순서 재조립) | 데이터 순서 보장 안됨 (패킷이 순서대로 도착하지 않을 수 있음) |
| 혼잡 제어 | 혼잡 제어 및 흐름 제어 지원 | 혼잡 제어 없음 |
| 주요 사용 사례 | 웹 브라우징, 이메일, 파일 전송 (신뢰성 중요) | 실시간 스트리밍, 온라인 게임, DNS (속도 중요) |
TCP를 사용하는 경우:
UDP를 사용하는 경우: