HTTP / 2
Key goal : 다중 객체 HTTP 요청 지연 감소
HTTP1.1 : 단일 TCP 연결을 통해 여러 파이프 라인 GET 도입
▪ server는 GET 요청에 순서대로 응답합니다 (FCFS : first-come-first-served scheduling).
▪ FCFS를 사용하면 작은 객체가 큰 객체 뒤의 전송 (head-ofline(HOL) blocking)을 기다려야 할 수 있습니다.
▪ 손실 복구 (손실된 TCP 세그먼트 재전송)로 인해 객체 전송이 중단됨
HTTP / 2 : [RFC 7540, 2015] client에 개체를 보낼 때 server의 유연성 향상 :
▪ 메서드, 상태 코드, HTTP 1.1에서 변경되지 않은 대부분의 header field
▪ client 지정 개체 우선순위를 기반으로 요청된 개체의 전송 순서 (반드시 FCFS는 아님)
▪ 요청되지 않은 개체를 clinet에 push
▪ 개체를 frame으로 분할하고 frame을 schedule하여 HOL 차단을 완화합니다.
#
HTTP/2: mitigating HOL blocking
HTTP 1.1 : client가 1개의 큰 개체 (예 : 동영상 파일 및 3 개의 작은 개체)를 요청합니다.
HTTP / 2 : 프레임으로 분할된 객체, interleave된 프레임 전송
# 평균 지연을 감소시킨다.
단일 TCP 연결을 통한 HTTP / 2는 다음을 의미합니다.
▪ 패킷 손실 복구는 여전히 모든 개체 전송을 지연시킵니다.
• HTTP 1.1에서와 같이 브라우저는 지연을 줄이고 전체 처리량을 높이기 위해 여러 개의 병렬 TCP 연결을 열 수 있 습니다. # version 2에서는 그렇지 않다.?
▪ vanilla TCP 연결을 통한 보안 없음
▪ HTTP / 3 : UDP를 통한 개체 error- 및 congestion-control(더 많은 파이프 라이닝)별 보안 추가
• transport layer의 HTTP / 3에 대한 추가 정보
# tcp 프로토콜은 혼잡제어를 수행한다(이거할 수 있으면 tcp쓸 이유가 없음),
http의 application layer 프로토콜에서 혼잡제어를 하고 tcp 프로토콜을 또 쓰면 좋은 방법이 아니다. udp를 쓴다
# tcp 프로토콜의 connect()를 이용해서 port scaning을 한다. host, server의 모든 port, tcp port 어떤 종류의 프로토콜이 free인지 알려준다. 보안에 문제가 될 수 있다. port를 scan하는 것은 문을 두드리는 것
공격유형을 알고싶다면 nmap을 사용해라. 어떤 port가 열려있는지 알 수 있다. -->보안이 매우 약하다는 것이다.
세 가지 주요 구성 요소 :
▪ user agents
▪ mail servers
▪ 단순 메일 전송 프로토콜 : SMTP
# email은 mail server도 포함되어있다.
User Agent
▪ 일명 "mail reader"
▪ 메일 메시지 작성, 편집, 읽기
▪ 예 : Outlook, iPhone 메일 클라이언트
▪ 서버에 저장된 발신, 수신 메시지
# mail server는 항상 mail의 한 사용자 측에만 있다.
# yahoo, gmail 각자 다른 서버가 있고 smtp를 써서 서로 통신 가능
E-mail: mail servers
mail servers:
▪ mailbox에는 사용자에 대한 수신 메시지가 포함됩니다.
▪ 보내는 (보낼) mail message의 message queue
▪ 이메일 메시지를 보내기위한 메일 서버 간의 SMTP 프로토콜
• client: 보내는 메일 서버
•“server”: 수신 메일 서버
# mail server는 역할 및 특성 변경 가능
E-mail: the RFC (5321)
Application Layer : 2-56
▪ TCP를 사용하여 client(연결을 시작하는 mail server)에서 server, port 25로 email message를 안정적으로 전송합니다.
▪ 직접 전송 : sending server (client 역할)를 receiveing server로
▪ 3 단계 전송
• handshaking (인사) # 발신자와 수신자를 주소 공유
• message의 전송 #
• closure
▪ commad / response 상호 작용 (예 : HTTP)
• commands : ASCII 텍스트
• response : status code 및 phrase
▪ message는 7 bit ASCI 여야합니다. # binary data를 가질 수 없다, 먼저 asci로 인코딩, 디코딩해야한다.
http는 가능하다 binary 데이터를 포함할 수 있다
Scenario: Alice sends e-mail to Bob
1) Alice는 UA를 사용하여 bob@someschool.edu로 "받는"전자 메일 메시지를 작성합니다.
# handshaking이 있어야 한다, alice는 자신의 이메일 주소와 수신자를 공유.
2) Alice의 UA가 mail server로 message를 보냅니다. message queue에있는 message
3) SMTP의 클라이언트 측은 Bob의 메일 서버와 TCP 연결을 엽니다.
4) SMTP 클라이언트는 TCP 연결을 통해 Alice의 메시지를 보냅니다.
# ascii text로 전달
5) Bob의 메일 서버가 Bob의 편지함에 메시지를 저장합니다.
6) Bob은 메시지를 읽기 위해 사용자 에이전트를 호출합니다.
# 읽고 싶을 때마다
Sample SMTP interaction
Try SMTP interaction for yourself:
telnet 25 <servername> 25 # 프로토콜과의 통신을 연다
▪ server로부터 220 개의 응답을 참조
▪ 위의 HELO, MAIL FROM :, RCPT TO :, DATA, QUIT 명령을 입력하면 email client(reader)를 사용하지 않고 email
을 보낼 수 있습니다.
참고 : 이것은 <servername>이 포트 25에 대한 telnet 연결을 허용하는 경우에만 작동합니다 (보안 문제로 인해 점점 더 드뭅니다).
SMTP: closing observations
comparison with HTTP:
▪ HTTP: pull # 정보를 보내주세요, 요청
▪ SMTP: push # 정보를 받으세요, spam을 받는 이유!
# 의미론적 관점
▪ 둘 다 ASCII command / response interaction, status codes가 있습니다
▪ HTTP : 자체 응답 메시지에 캡슐화된 각 개체
▪ SMTP : multi part message로 전송되는 여러 개체
▪ SMTP는 persistent connections영구 연결을 사용합니다.
▪ SMTP는 message(header 및 body)가 7 bit ASCII 여야합니다.
▪ SMTP server는 CRLF.CRLF를 사용하여 message의 끝을 결정합니다.
Mail message format
SMTP : RFC 531 (예 : HTTP)에 정의 된 e-mail messages 교환 프로토콜
RFC 822는 e-mail messages 자체에 대한 구문을 정의합니다 (예 : HTML).
▪ header line, 예 :
• To:
• From:
• Subject:
SMTP MAIL FROM :, RCPT TO : command 와는 다른 e-mail messages 영역의 boday 내에서이 줄!
▪ Body : "message", ASCII 문자 만
Mail access protocols
▪ SMTP : 수신자의 서버로 e-mail messages 전달 / 저장
▪ mail access 프로토콜 : server에서 검색
• IMAP: 인터넷 mail access 프로토콜 [RFC 3501] : server에 저장된 message, IMAP는 server에 저장된 message의 검색, 삭제, 폴더 제공
▪ HTTP : gmail, Hotmail, Yahoo! Mail 등은 STMP (send), IMAP (또는 POP) 위에 웹 기반 인터페이스를 제공하여 email message를 검색합니다.
'컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 Week 7-1 : P2P application (0) | 2020.10.13 |
---|---|
컴퓨터 네트워크 Week 6-2 : Domain (0) | 2020.10.12 |
컴퓨터 네트워크 Week 5-1 : (0) | 2020.10.04 |
컴퓨터 네트워크 Week 4-2 : Web and HTTP, Non-persistent, Persistent (1) | 2020.10.04 |
컴퓨터 네트워크 Week 4-1 : Principles of network applications (0) | 2020.09.22 |