Home
📘

2. Protocol Architecture, TCP/IP, and Internet-based Applications

Keyword

Layering의 이유

구조를 통해 복잡한 시스템 조각을 식별 및 관계를 알 수 있음
계층화된 참조 모델
모듈화로 유지보수 및 시스템 업데이트 간소화
계층의 서비스 구현 변경: 나머지 부분에 대해 투명함 + 간편함
게이트 절차 변경이 시스템의 나머지 부분에 영향을 미치지 않음
간소해짐 + 다른 레이어와 역할 구분 가능
완벽하게 되진 않지만 표준이 정해지기 때문에 그나마 간단해진다

Internet Protocol Stack

L5: Application Layer
Network Application을 보조 - IMAP, SMTP, HTTP * 구체적으로 어떤 서비스를 제공하는지 * 데이터를 어떤 형식으로 할 것인지 * 통신의 시작과 끝을 어떻게 관리할 것인지
L4: Transport Layer
process로서, data를 transfer 데이터를 정렬 및 오류 정정 - TCP, UDP * 통신의 신뢰성을 어떻게 확보하는가
L3: Network Layer
datagram들을 src → dst로 routing 네트워크상 개개인 식별 - IP(routing protocols) * 네트워크와 네트워크를 어떻게 중개하는가
L2: Data Link Layer
이웃한 네트워크 요소 사이에서 data transfer - Ethernet, 802.11(WIFI) * 같은 네트워크 내에서 어떻게 통신하는가
L1: Physical Layer
bits on the wire(전선 위에) * 물리적으로 어떻게 연결할까

TCP/IP Protocol Architecture

인터넷에서 표준으로 사용되는 네트워크 프로토콜 == IP를 비롯한 여러 프로토콜의 집합체를 총칭
TCP
패킷의 수신 확인을 실시, 올바른 순서로 패킷이 전달되도록 보장
신뢰성이 높음
정확한 데이터 송수신 가능
수신 확인 & 패킷의 재송신 등의 절차 → 무거움
패킷의 순서를 보장하지 않음
데이터 → 패킷 분할 시 분할순 시퀀스 번호 할당
수신 측에서 시퀀스 번호 확인 후 필요에 따라 순서 정렬 및 확인
수신 측에서 수신 여부를 알리는 ACK 패킷을 송신측에 전달
→ 송신 측에서도 전송한 패킷이 도착했는지 알 수 있음
→ 일정 시간 이상 기다려도 대답이 없는 경우(ACK 패킷이 없는 경우) 패킷을 재전송하여 손실 방지
IP
네트워크 각 기기의 주소를 할당
주소를 기반으로 패킷을 전송하는 역할
패킷을 상위 계층에서 수신한 뒤 IP 헤더 정보를 추가하여 네트워크에 전송
경로 선택 방법도 정의되어 있음
⇒ 기기의 주소를 정하고 그 주소까지 데이터를 보내기 위한 프로토콜

TCP/UDP

TCP
UDP
연결 지향적 프로토콜: 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜
비연결형 프로토콜: 연결을 위해 할당되는 논리적인 경로가 없고, 각각의 패킷은 다른 경로로 전송 + 독립적인 관계
신뢰성을 보장: 데이터를 안정적으로, 순서대로, 에러 없이 교환할 수 있게 함
1. 연결형 서비스 — 가상 회선 방식 * 3-way handshaking 연결 설정 * 4-way handshaking 연결 해제
1. 비연결형 서비스 — 데이터그램 방식 * 데이터의 전송 순서 바뀔 수 있음 2. 데이터의 수신 여부 미확인
2. 흐름 제어: 데이터 처리 속도를 조절하여 rx의 버퍼 오버플로우 방지
3. 혼잡 제어: 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
4. 높은 신뢰성 && 느린 속도
3. 신뢰성이 낮음 && 빠름
5. Full-Duplex(양방향) && P2P(각 연결이 2개의 종단점)
4. 1:1 || 1:N || N:N 통신 가능
SNTP(Simple Network Management Protocol)과 함께 쓰임
TCP/UDP Headers
Secure TCP
일반 TCP, UDP 소켓의 경우
→ NO Encryption
TLS(Transport Layer Security)
provides encrypted TCP connections
data integrity
end-point authentication

Processes communicating

process : 1개의 호스트 내에서 동작하는 프로그램
프로세스끼리 communication도 일어날 수 있음(OS에 의해 정의된다)
다른 호스트들에서 프로세스끼리는 messages를 교환하며 소통이 이루어짐
sockets : process가 메세지를 소켓을 통해 주고받음
rx와 tx에 각각 socket이 존재

Application-Layer protocol DEFINES:

메세지가 교환되는 방식(request, response)
메세지의 문법(어떤 필드가 있는지, 어떻게 필드가 정의되는지)
message semantics(필드의 의미)
프로세스가 send & response를 언제 어떻게 하는 지에 대한 규칙
open protocols
RFC
allows for interoperability
HTTP, SMTP

What transport service does an app need?

Data Integrity
- loss 없이 잘 도착하는가
Timing
- delay
Throughput
- bandwidth - 처리해야 하는 데이터의 양
Security
Encryption, data integrity,

HTTP

OVERVIEW
definition) Hypertext Transfer Protocol
웹의 5계층 프로토콜
client/server 모델 규격을 따름
TCP 사용 → 80포트로 클라이언트가 서버에게 웹소켓으로 커넥션 요청
→ 커넥션 받아들임 → 메세지 오감 → 커넥션 닫힘
Stateless: 클라이언트의 리퀘스트에 대한 데이터를 서버가 maintain(유지)시키지 않음. 상태가 없다
Cookies
stateless한 http를 보완하기 위한 개념
state를 트랜잭션 사이에서 유지하기 위해 작은 정보 덩어리 cookie를 헤더에 넣어 사용
구성 요소
1.
cookie header line of HTTP response message
2.
cookie header line in next HTTP request message
3.
cookie file kept on user’s host, managed by user’s browser
4.
back-end db at web site
사용 방식
1.
authorization
2.
장바구니
3.
추천 시스템
Web Caches(proxy servers)
브라우저가 cache에 http 리퀘스트를 보낸다
요청한 데이터가 cache에 있을 경우 바로 클라이언트에 전달
서버, 클라이언트 양방향에 존재
캐시는 ISP에 의해 설치된다
사용 이유
reduce response time for client request
cache는 client와 더 가까움
reduce traffic on an institutions’ access link
Internet is dense with caches