[모두의네트워크&그림으로 배우는HTTP&Network] 7주차 공부

김서영·2021년 10월 24일
0

네트워크 스터디

목록 보기
7/12

HTTP 헤더

6.5 리스폰스 헤더 필드

서버 측으로부터 클라이언트 측으로 송신되는 리스폰스 메세지에 적용된 헤더로 리스폰스의 부가 정보나 서버의 정보, 클라이언트에 부가 정보 요구 등을 나타냄.

Accept-Ranges

Accept-Ranges:bytes
서버가 리소스의 일부분만 지정해서 취득할 수 있는 Range 리퀘스트를 접수할 수 있는 지 여부를 전달. 지정 가능한 필드 값은 2개. 수신 가능한 경우에는 "bytes", 수신 불가능한 경우에는 "none".

Age

Age: 600
얼마나 오래 전에 오리진 서버에서 리스폰스가 생성되었는지를 전달.
필드값의 단위는 초.

ETag

ETag: "82e22289329292409da39020380892"
엔티티 태그라고 불리며 일의적으로 리소스를 특정하기 위한 문자열을 전달. 서버는 리소스마다 ETag 값을 할당. 리소스가 갱신되면 ETag 값도 갱신.

강력한 ETag 값과 약한 ETag 값

강한(strong) ETag, 약한(weak) ETag 값으로 구별.

강한 ETag 값

엔티티가 아주 조금 다르더라도 값은 무조건 변경
ETag: "Usagi-1234"

약한 ETag 값

리소스가 같다는 것만을 의미
ETag: W/"usagi-1234"

Location

Location: http://www.usagidesign.jp/sample.html
리스폰스의 수신자에 대해서 Request-URI 이외의 리소스 액세스를 유도하는 경우 사용.

Proxy-Authenticate

Proxy-Authenticate: Basic realm="Usagidesign Auth"
프록시 서버에서의 인증 요구를 클라이언트에 전달.

Retry - After

Retry-After: 120
클라이언트가 일정 시간 후에 리퀘스트를 다시 시행해야 하는 지를 전달.
Server: Apache/2.2.17(Unix)
Server: Apache/2.2.6 (Unix) PHP/5.2.5

Vary

Vary: Accept-Language
캐시를 컨트롤하기 위해 사용.

WWW-Authenticate

WWW-Authenticate: Basic realm="Usagidesign Auth"
HTTP 액세스 인증에 사용. Request-URL에 지정했던 리소스에 적용할 수 있는 인증 스키마와 파라미터를 나타내는 challenge를 전달.

6.6 엔티티 헤더 필드

리퀘스트 메세지와 리스폰스 메세지에 포함된 엔티티에 사용되는 헤더로 콘텐츠의 갱신 시간 같은 엔티티에 관한 정보를 포함.

Allow

Allow: GET,HEAD
Request-URL에 지정된 리소스가 제공하는 메소드의 일람을 전달.

Content-Encoding

Content-Encoding: gzip
서버가 엔티티 바디에 대해서 실시한 콘텐츠 코딩 형식을 전달.

  • Gzip
  • Compress
  • Deflate
  • Identity

Content-Language

Content-Language: en
엔티티 바디에 사용된 자연어(한국어나 영어 등)를 전달.

Content-Length

Content-Length: 15000
엔티티 바디의 크기(단위는 bytes)를 전달.

Content-Location

Content-Location: http://www.hackr.jp/index-ja.html
메세지 바디에 대응하는 URL을 전달.

Content-MD5

Content-MD5: OGFkZDUwNGVh3N2MxMDl3iklwi9vLwis9j==
메세지 바디가 변경되지 않고 도착했는지 확인하기 위해 MD5 알고리즘에 의해 생성된 값을 전달.

Content-Range

Content-Range: bytes 5001-10000/10000
범위를 지정해서 일부분만을 리퀘스트하는 Range 리퀘스트에 대해서 리스폰스를 할 때에 사용.

Content-Type

Content-Type: text/html; charset=UTF-8
엔티티 바디에 포함되는 오브젝트의 미디어 타입을 전달.

Expires

Expires: Wed, 04 Jul 2012 08:26:05 GMT
리소스의 유효 기한 날짜 전달.

Last-Modified

Last-Modified: Wed, 24 October 2021 12:30:10 GMT
리소스가 마지막으로 갱신되었던 날짜 정보를 전달.

응용 계층: 애플리케이션에 데이터 전송하기

응용 계층의 역할

웹 페이지를 볼 때는 인터넷 익스플로러 같은 웹 브라우저 사용.
메일을 보내고 받을 때는 Outlook 같은 메일 프로그램 사용.
애플리케이션은 사용자가 하고 싶은 일을 할 수 있도록 도움.

  • 서비스를 요청하는 측(클라이언트)
  • 서비스를 제공하는 측(서버)

응용 계층에서 애플리케이션이 동작.
응용 계층 = 5계층의 세션 계층 + 6계층 표현 계층

프로토콜내용
HTTP웹 사이트 접속
DNS이름 해석
FTP파일 전송
SMTP메일 송신
POP3메일 수신

웹 서버의 구조(웹사이트 접속)

WWW

WWW == W3 == 웹(Web)
WWW는 아래와 같이 3가지 기술이 사용.

  • HTML(Hypertext Markup Language): 웹 페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업 언어. 제목이나 목록과 같이 문장 구조를 지정하거나 이미지 파일을 보여줄 때도 태그 사용. 하이퍼 링크도 사용 가능.
  • URL
  • HTTP

HTTP

클라이언트(웹 브라우저)는 웹 사이트를 보기 위해 서버(웹 서버 프로그램)의 80번 포트를 사용하여 HTTP 통신을 함. 클라이언트 측에서 HTTP 요청(request)를 보내고 서버에서 HTTP 응답(response)를 반환.

HTTP/1.0 : 요청을 보낼 때마다 연결/연결 종료를 반복.
HTTP/1.1 : Keepalive 기능을 통해 연결을 한 번 수립하면, 데이터 교환을 마칠 때까지 유지. 데이터 교환을 모두 끝내면 연결을 끊음. 요청과 응답의 순서대로 처리하는 특징이 있어, 요청을 처리하는 데 시간이 길어지면 다음 요청에 대한 처리가 늦어짐.
HTTP/2 : HTTP/1.1의 기능에서 요청을 보낸 순서대로 응답을 반환하지 않아도 됨.

DNS 서버의 구조(이름 해석)

도메인 이름

www.gilbut.co.kr -----> 222.235.64.222
도메인 이름 : 컴퓨터나 네트워크를 식별하기 위해 붙어진 이름
호스트 이름(서버 이름) : 도메인 이름 앞에 있는 www
DNS : URL을 IP 주소로 변환하는 서비스(시스템)

  1. 웹 브라우저에 url을 입력하여 접속, www.gilbut.co.kr
  2. DNS 서버로 IP 주소를 알려달라 요청
  3. DNS 서버는 해당 URL IP주소를 알려줌, 222.235.64.222
  4. 해당 IP 주소로 접속 222.235.64.222

DNS 서버는 전 세계에 흩어져 있고 모두 계층적으로 연결. 요청받은 DNS 서버가 해당 도메인 이름의 IP 주소를 모르는 경우에는 다른 DNS 서버에 질의.

메일 서버의 구조(SMTP와 POP3)

메일의 송수신 구조

메일을 보내는 데 사용되는 프로토콜은 SMTP(포트번호 25).
메일을 받는 데 사용되는 프로토콜은 POP3(포트번호 110).

  1. SMTP를 사용하여 컴퓨터 1에서 메일 서버 1로 메일을 보냄.
  2. SMTP를 사용하여 메일 서버 1에서 메일 서버 2로 메일을 보냄.
  3. POP3를 사용하여 메일 서버 2에서 컴퓨터 2로 메일 데이터를 보냄.

SMTP에 의한 메일 송신과 메일 전송

컴퓨터 1과 메일 서버 1 간의 통신

컴퓨터 1 <----1. 세션 시작을 통지----> 메일 서버 1
컴퓨터 1 <----2. 송신자의 메일 주소 통지----> 메일 서버 1
컴퓨터 1 <----3. 목적지 메일 주소 통지----> 메일 서버 1
컴퓨터 1 <----4. 메일 본문 전송 통지----> 메일 서버 1
컴퓨터 1 <----5. 메일 본문 송신 ----> 메일 서버 1
컴퓨터 1 <----6. 세션 종료를 통지----> 메일 서버 1

POP3에 의한 메일 수신

SMTP는 메일 서버 1이 메일 서버 2로 메일을 전송할 수 있음. 메일 서버에는 메일 박스라고 하는 메일을 보관해주는 기능이 있음. 메일 서버 2는 POP3를 사용해 메일 서버 2의 메일 박스에서 메일을 가져와 컴퓨터 2로 전송.

메일을 수신할 때는 사용자 이름과 비밀번호를 이용한 사용자 인증이 필요.

메일 서버 2 <----1. 세션 시작을 통지----> 컴퓨터 2
메일 서버 2 <----2. 수신자의 사용자 이름을 통지----> 컴퓨터 2
메일 서버 2 <----3. 수신자의 비밀번호 통지----> 컴퓨터 2
메일 서버 2 <----4. 메일 확인----> 컴퓨터 2
메일 서버 2 <----5. 메일 전송 요청 ----> 컴퓨터 2
메일 서버 2 <----6. 세션 종료를 통지----> 컴퓨터 2

profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글