콘텐츠로 이동

2021 04 19

2021-04-19

그림으로 배우는 Http Network Basic

  • 제1장. 웹과 네트워크의 기본에 대해 알아보자 - WWW 구성 - 문서 기술 언어: HTML - 문서 전송 프로토콜: HTTP - 문서 주소 지정방법: URL - 네트워크는 TCP/IP로 구축 - 애플리케이션 계층 - HTTP, FTP, DNS - 트랜스포트 계층 - TCP, UDP - 네트워크 계층 - 패킷의 이동 - 링크 계층 - 하드웨어 - IP/TCP/DNS - IP 프로토콜 - IP 주소랑 다른거임 - 개개의 패킷을 상대방에게 전달 - IP 주소와 MAC 주소를 통해 패킷 전달 - ARP 프로토콜 활용 - 수신지의 IP 주소를 활용해 MAC 주소 조사 - TCP 프로토콜 - 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인 - DNS 프로토콜 - 도메인 주소와 IP 대응 - URI는 리소스를 식별하기 위해 문자열 전반을 나타내는데 비해, URL은 리소스의 장소 나타냄
  • 제2장. 간단한 프로토콜 HTTP - Stateless, 이전 리퀘스트/리스폰스 기억 X - 근데 상태 유지하고 싶어서 Cookie 도입 - HTTP 메서드 - GET: 리소스 획득 - POST: 엔티티 전송 - PUT: 파일 전송 - HEAD: 메시지 헤더 취득 - DELETE: 파일 삭제 - OPTIONS: 제공하고 있는 메서드의 문의 - 요청시 Allow: GET, POST, HEAD, OPTIONS 처럼 반환 - TRACE: 경로 조사 - 보안상의 문제 있어서 잘 안씀 - CONNECT: 프록시에 터널링 요구 - 프록시에 터널 접속 확립을 요함 - TCP 통신을 터널링 시키기 위해 사용 - 초기에는 HTTP 통신 한번에 TCP 통신 한번 연결/종료 했어야 했음 - 웹 발생하면서 오버헤드 커짐 - HTTP/1.1부터 Persistent Connections 방법 고안 - 한쪽이 명시적으로 연결 종료하지 않는다면, TCP는 연결 유지함
  • 제3장. HTTP 정보는 HTTP 메시지에 있다 - 메시지 헤더 - 서버와 클라이언트가 꼭 처리해야하는 리퀘스트와 리스폰스 내용과 속성 등 - 메시지 바디 - 전송되는 데이터 그 자체 - HTTP로 데이터 전송할 경우 인코딩을 통해 전송 효율 높일 수 있음 - 다량의 액세스를 효율 좋게 처리 가능 - 메시지: HTTP 통신의 기본 단위, 통신을 통해 전송 - 엔티티: 리퀘스트/리스폰스의 부가물로, 엔티티 헤더필드와 엔티티 바디로 구성 - HTTP 메시지 바디의 역할: 리퀘스트/리스폰스에 관한 엔티티 바디 운반 - 콘텐츠 코딩 - 엔티티에 적용하는 인코딩으로, 엔티티 정보를 유지한채 압축 - 청크 전송 코딩 - 사이즈가 큰 데이터를 전송하는 경우, 데이터를 분할해서 조금씩 전송 - 엔티티 바디를 분할하는 기능을 청크 전송 코딩 - 엔티티 바디를 청크로 분해 + CRLF 추가해서 기록 - 멀티파트 - 하나의 메시지 바디 내부에 엔티티를 여러개 포함시켜 보낼 수 있음 - 레인지 리퀘스트 - 엔티티의 범위를 지정해서 다운로드 - 응답 상태코드는 206 partial content - 콘텐츠 네고시에이션 - 클라이언트와 서버가 제공하는 리소스의 내용에 대해 교섭하는것 - 클라이언트에 더욱 적합한 리소스 제공 - 언어/문자 세트/인코딩 방식을 변경
  • 제4장. 결과를 전달하는 HTTP 상태 코드 - 상태 코드: 클라이언트가 서버를 향해 리퀘스트 보낼 때, 서버에서 결과가 어떻게 되었는지 알려주는 것 - 1xx (Informational) : 리퀘스트 받아들여 처리중 - 2xx (Success) : 리퀘스트 정상적으로 처리함 - 200(Success): 리퀘스트가 정상으로 처리됨 - 204(No Content): 클라이언트에서 서버에 정보를 보내는 것으로 족하고, 클라이언트에 대해서 새로운 정보를 보낼 필요가 없는 경우 사용 - 206(Partial Content): Range에 의해 범위가 지정된 리퀘스트에 의해 서버가 부분적 GET 리퀘스트를 받은 것 - 3xx (Redirection) : 리퀘스트 완료하기 위해 브라우저에서 추가 동작이 필요 - 301(Moved Permanently): 요청된 리소스에 새로운 URI가 부여되어 있어, 이후로는 그 URI를 사용해야 함을 알려줌 - 302(Found): 일시적으로 URI가 이동했으니, 거길 참조하세요 - 303(See Other): URI가 이동했으니, 거길 "GET"메서드를 통해 참조하세요 - 4xx (Client Error) : 서버는 리퀘스트 이해 불가능 - 400(Bad Request): 리케스트 구문이 잘못되었음 - 401(Unauthorized): 유저 인증에 실패! WWW-Authenticate 헤더 필드를 포함하세요 - 403(Forbidden): 리퀘스트 된 리소스의 액세스가 거부되었음 - 404(Not Found): 리퀘스트 한 리소스 서버상에 없음 - 5xx (Server Error) : 서버는 리퀘스트 처리 실패 - 500(Internal Server Error): 서버에서 리퀘스트 처리 도중 에러 발생함 - 503(Service Unavailable): 서버 과부하 상태이거나 점검 중임