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