1. Principles of network applications
1. network & app
1) end system은 모든 계층 프로토콜을 다 가져야 함
2) 라우터는 network 계층까지만 있어도 됨
2. app 관계 종류
1) Client-Server paradigm
- server
1) 항상 켜져있고, 자신만의 고유한 주소를 가진다.
- client
1) 자기가 서비스 받을 때만 연결, IP주소를 할당 받음
2) client끼리 직접적 통신은 불가
2) Peer-Peer paradigm : 서버 or 클라이언트 역할이 정해지지 않음
3. 통신
1) 한 컴퓨터 내에 process끼리 통신 : OS 차원에서 IPC(Inter Process Communication 프로세스 간 통신)을 제공한다.
2) 다른 컴퓨터 host간의 통신 : socket 통신
4. Process들의 주소
1) IP주소 = 컴퓨터 주소(논리적)
2) port번호 = 프로세스 주소
*client는 서버의 IP주소, port번호를 알고 있어야 한다.
5. Application이 원하는 서비스들 = network가 제공해야하는 서비스
1) data integrity : 보낸 것, 받은 것을 동일하게 ex)파일 전송 vs loss가 있어도 괜찮다. ex) 오디오, 비디오
2) timing : 빨리 전송돼야 하는가
3) throughput(주어진 시간에 얼마나 많은 데이터를 보낼건가) : 최소한의 양만 있어도 괜찮음 vs 가능하면 많은 데이터
4) security : 보안
6. 인터넷 transport protocol service
= network에서 제공하는 서비스를 application에서 요구하는 서비스로 변환해주는 서비스
*network에서 제공하는 서비스 = Best-effort(loss가 생기거나 순서가 엉망일 수 있음) <=> guaranteed service
1) TCP
- reliable transport : 보낸 것 = 받은 것
- flow control : 수신측(buffer)에서 수용 가능한 양만큼만 보내야 한다.
- congestion control : packet 수를 조절해서 network가 혼잡해지는 것을 막자
- 제공하지 않는 서비스 : timing, throughput, security
- connection-oriented : 송신측과 수신측의 연결 설정이 필요하다. (물리적이든 논리적이든)
2) UDP
- unreliable 전송 & 다른 일 처리 X => network 계층에서 온 거 그대로 전달
2. Web과 HTTP
1. Web과 HTTP란?
1) HTTP = object들 받아오는 약속
2) 웹페이지는 여러 object들을 포함한 HTML파일로 구성
3) 각 object들은 URL로 표현되어있다.
2. HTTP 개요
1) TCP 사용 => 브라우저 프로세스 & 서버 프로세스간의 통신
2) stateless (과거 정보 관리 X)
3. HTTP connection types
1) Non-persistent HTTP = 한 object 전송할 때마다 connection을 열고 닫음
2) Persistent HTTP = connection 한 번 열면 여러 개 주고 받고나서 닫자, response time측면에서 좋다.
4. HTTP request message
- method 종류
- POST = form으로 input 받고 싶을 때 받아서 서버로 보낸다. (특정한 데이터 생성 요청)
- GET = 우리가 필요한 object를 내놔라 (특정한 데이터 조회 요청)
- HEAD = object말고 header 정보만 먼저 달라
- PUT = 새로운 object를 서버에 업로드 (특정한 데이터 수정 요청)
- DELETE (특정한 데이터 삭제 요청)
5. HTTP response message
- status code
- 200 OK = 성공적으로 받았고, 여기 object가 있으니 써라.
- 301 Moved Permanently = object가 다른 곳으로 이동했다. 여기로 가봐라
- 400 Bad Request = 무슨 말인지 모르겠다. parsing해서 읽어가는 데 이해가 안 안된다.
- 404 Not Found = 옮긴 것도 아니고, 그냥 그 object는 존재 하지 않는다.
- 505 HTTP Version Not Supported
6. Cookies
= 원래 HTTP는 stateless지만 cookie를 이용하면, stateful하게 작동할 수 있다.
7. Web cache(=proxy server)
1) 다른 client가 동일한 object를 요청하면 origin을 갈 필요 X, 시간 단축
2) Conditional GET
- 캐시에 데이터와 같이 저장한 날짜 정보로 이 시간 이후로 수정했는지 origin한테 물어본다.
- 수정됐으면 응답하면서 바뀐 데이터도 같이 보내줌
8. HTTP1.1
1) persistent HTTP
2) pipelined GET 가능 (한 TCP connection에서) = 연속으로 여러 packet을 전송함
3) in-order (FCFS : first come first served) = 순서대로 서비스
4) Head of Line Blocking
- 1번 object의 크기가 크고 2번은 작지만, 1번 전송이 끝날 때까지 기다려야 함.
- 앞에 object의 loss recovery하느라 뒤에 전송을 block
5) 아스키코드로 전송 ex) G : 10010..., E : ...
9. HTTP2
1) push 서비스 = A object와 B object가 상호관련 있으니 A를 요청할 때 B를 요청하지 않아도 push!
2) HOL blocking 해결 = object들을 frame으로 나눠서 frame을 스케쥴링
3) binary로 전송 ex) GET : 1011
10. HTTP3
3. E-mail, SMTP, IMAP
1. User agent = 메일 reader & writer
2. mail server
1) mailbox = 수신한 메일 저장
2) message queue = 송신하는 메시지 보관
3. SMTP 프로토콜 = 메일 서버끼리 이메일 주고 받을 때 쓰는 프로토콜
4. IMAP 프로토콜 = user agent와 mail server간의 통신을 위한 프로토콜
4. Domain name system (DNS)
1. DNS 서버란?
*distributed database : 여러 사람이 한 DB를 쓰면 일이 너무 많으니 분산시키자. 여러 DB가 내용을 나눠 가짐
2. DNS가 제공하는 서비스들
1) hostname => IP주소
2) host aliasing = canonical name(원래 이름 mail.xy.tistory.com) <=> alias name(간단한 이름 mail.tistory.com)
3) load distribution
- 한 서버가 수용할 수 있는 client 수에 한계가 있다.
- 서버를 여러 개로 나눠서 DNS에게 같은 이름으로 물어보면 3개 중 1개의 주소를 알려준다.
3. DNS 계층구조
4. DNS name resolution
5. P2P applications : 파일 공유
1. P2P(peer to peer) 파일 공유하는 법
1) 모두가 서버에 업로드 & 다운로드 : client-server 모델
2) 해당 파일이 누구한테 있는지 서버에 저장
- 파일 공유하는 것만 보면 P2P
- 서버가 고장나면 끝..
3) Bit Torrent = file 공유하고 싶은 사람끼리 망을 만들자
6. Video streaming & content distribution networks
1. Multimedia(video)
1) video는 이미지의 연속
2) data rate은?
- 1초에 24개 이미지를 보낼 때, 24images * x * y * 24bits(=1 pixel) /sec
*x : 이미지 1개의 가로 픽셀 수
*y: 이미지 1개의 세로 픽셀 수
- 줄이는 방법
1. spatial coding = 색이 어디서 어디까지 같은지에 대한 정보를 보내자.
2. temporal coding = 두 프레임(보낸 프레임과 현재 보낼 프레임)의 차이 정보만 보내자.
- CBR(constant bit rate) = 한 pixel당 24bits로 여러 이미지를 일정한 수의 pixel으로
- VBR(variable bit rate) = redundancy를 고려해서 코딩한 후 보내면 rate이 계속 변한다.
2. DASH (Dynamic Adaptive Streaming over HTTP)
1) 서버
- 큰 데이터를 chunk단위로 자름
- 각 chunk를 고~저화질로 모두 인코딩 해놓는다.
- 각 chunk의 고~저화질 각각의 URL을 manifest 파일에 담아서 제공한다.
2) 클라이언트
- 제일 처음 서버가 준 manifest파일을 보고 네트워크 상황에 따라 필요한 chunk를 URL로 요청한다.
3. CDN (Content distribution networks)
= 서버 하나면 멀리 있는 client에게 못 주니까 컨텐츠를 복사해서 가지고 있는 서버
1) Netflix 서버한테 A영상 어디있냐 물어본다.
2) 서버는 manifest파일을 준다.
*manifest 파일 : 우리 집에서 제일 가까운 서버에서 받도록 되어 있다.
'CS > 컴퓨터망' 카테고리의 다른 글
CH1) Introduction (0) | 2021.07.02 |
---|