지난시간 핵심
: packet 한묶음으로 같이 다닌다. 많은 사용자가 라우터에게 packet을 주면 queue에 쌓이고(delay) 넘치면 drop돼서 데이터가 유실된다 (인터넷 손실의 90% 차지)
차량 1대가 1bit이다
packet (10bit)
한묶음으로 데이터가 간다.
packet앞쪽이 router에 먼저 도착했다고 해도, 뒤가 도달하지 못하면 기다린다. (다 도착하면 이동한다)
이게 packeting switching이다.
network 계층
= network 기능이 있는 process | 각 계층 안 다양한 프로토콜 존재 (대표적인 예만 작성) |
Application Layer | HTTP |
Transport Layer | TCP/UDP |
Network Layer | IP |
Data Link Layer | WIFI/LTE/3G/Ethenet |
Physical Layer |
네트워크 계층은 5개로 구분되어 있다
상위 계층은 하위 계층이 제공하는 서비스를 받는다
즉, HTTP는 TCP의 기능을 제공받는다
Router 계층
Network |
Link |
Physical |
Client-server architecture
network application 내지는 server와 client가 동작하는 것이다
server (웹 서버)
always-on host (24시간 계속 동작)
permanent IP address (고정적인 주소를 가져야한다)
// 서버는 주소가 고정돼야 찾아갈 수 있겠죠 !
data centers for scaling
clients (웹 브라우저)
communicate with server
may be intermittently connected (간헐적으로 연결될 수 있다)
may have dynamic IP addresses (고정된 IP가 아니어도 된다)
ㄴIP주소가 바뀌어도 서버의 IP를 알고 있으므로 접속할 수 있다
do not communicate directly with each other
Socket
IPC : 같은 호스트 사이에서 프로세스 간의 통신을 하는 것
같은 컴퓨터 안에서 process간의 소통할 수 있도록 (IPC=inter-process communication)
os가 시스템콜(인터페이스)를 만들어놨다
다른 컴퓨터 상에서의 process 통신도 인터페이스가 있다 = socket
다른 컴퓨터 process의 소통을 위해선 상대 socket 주소가 필요하다
socket의 주소 역할을 하는 인덱싱 : (IP address, port number)
IP address : 컴퓨터 주소를 찾아가기 위함
port number : 컴퓨터 내의 어떤 프로세스를 찾아갈지 알기 위함
내 컴퓨터에서 웹 브라우저가 naver에 접근할 때 url만 입력하면 된다
왜 그럴까?
url을 입력하면 DNS(단순히 IP주소만 해석하는 것)에의해 naver IP 주소로 변한돼 접근이 가능하다
naver.com처럼 아무것도 입력하지 않으면, 80번 포트로 자동 연결된다
(naver.com = naver.com:80)
모든 웹서비스들은 모두 80번 포트를 쓴다
왜 그럴까?
찾아가기 쉽도록 !
서버는 주소가 일정해야한다는 것과 비슷한 맥락이다
What transport service does an app need?
상위 계층은 하위 계층이 제공하는 서비스를 받기 때문에 application은 TCP에 영향을 받는다
그럼 우리가 application 개발자라고 했을때, TCP가 해줬으면 하는 기능이 있을 것이다
- data integrity
- 데이터 유실 X
- timing
- 정한 타이밍(시간)에 데이터가 들어오는 것 (e.g 전화)
- throughput
- x 초에 y만큼의 양이 도달하는 것 (e.g 영화)
- security
- 보안, 안전
아쉽게도 transport에서 데이터가 유실되지 않는 것만 지원해준다 ( 이 기능은 TCP이 제공해준다)
+) 유명한 application들
Web and HTTP
HTTP : hypertext transfer protocol (우선 TCP connection이 되어야한다) / web's application layer protocol
hypertext : 텍스트인데, 중간에 다른 텍스트를 지칭하는 링크들이 있다
HTTP is stateless(상태가 없다) : HTTP는 단순해서 요청에 대해 답변만하고, 상대에 대한 상태를 더이상 기억하지 않는다
즉, 과거 클라이언트 요청에 대한 정보를 서버는 갖고 있지 않다
상태를 유지하는 프로토콜은 복잡하다
HTTP connections
HTTP가 TCP를 사용하는 방식에 따라 두가지로 나뉜다
- non- persistent HTTP (request, response후에 TCP의 연결을 끊는 경우) : 웹 브라우저에서 사용
- persistent HTTP (메세지를 주고받고도 유지+재사용하는 경우)
TCP connection -> HTTP connection -> TCP 끄기(양쪽에서 다 close해야하고 최종 client가 끊는다)
보통 파이프라이닝과 persistent가 결합된 방식을 사용한다
request한번에 4개, response도 한번에 4개 이런식 !
파이프라이닝 : 클라이언트가 여러 HTTP 요청을 하나의 TCP 연결을 통해 동시에 전송하는 메커니즘이다. 즉, 클라이언트는 이전 요청의 응답을 기다리지 않고 다음 요청을 보낼 수 있다
'Computer Network' 카테고리의 다른 글
[Lecture] Connection-oriented transport: TCP (0) | 2024.02.22 |
---|---|
[Lecture] Pipelined protocol (Go-Back-N과 Selective Repeat) (0) | 2024.02.20 |
[Lecture] Principles of Reliable Data Transfer (0) | 2024.02.20 |
[Lecture] Socket programming (0) | 2024.02.19 |
[Lecture] 컴퓨터 네트워크 기초 (0) | 2024.02.14 |