본문 바로가기

교양

(7)
HTTP 서버 HTTPS로 서비스 하기 이것때문에 하루 종일 얼마나 삽질 한지 모르겠다. 이론적인 부분은 검색해보면 차고 넘치는 만큼 오로지 목표에 다가서는 방법만 정리하려 한다. 1. SSL 인증서 발급 일단 SSL 인증서를 공인된 기관에서 받아야 한다. (openssl 같은 것을 이용해서 직접 만들수도 있지만, 어차피 실 서비스에 사용할 수 없다) SSL은 publicKey와 privateKey로 구성되는데 두 개의 파일이 필요하다는 것만 알고 있으면 된다. https://certbot.eff.org/ Certbot - Ubuntubionic Nginx Different Internet services are distinguished by using different TCP port numbers. Unencrypted HTTP norma..
HTTP 완벽가이드 - 5장 웹 서버 웹 서버는 무엇을 하는가 웹 서버는 다음과 같은 일을 수행한다. 1. 커넥션을 맺는다. 2. 요청을 받는다. 3. 요청을 처리한다. 4. 리소스에 접근한다. 5. 응답을 만든다. 6. 응답을 보낸다. 7. 트랜잭션을 로그에 남긴다. 이러한 단계가 어떻게 수행되는지 살펴보자 1. 클라이언트 커넥션 수락 클라이언트가 웹 서버에 TCP 커넥션을 요청하면 커넥션을 연결하고 서버는 커넥션 목록에 추가한다. 이후에 요청과 응답을 하는데 있어 웹서버는 마음대로 거절하거나 커넥션을 즉시 닫을 수 있다. 웹 서버는 연결된 클라이언트를 식별하기 위해서 역방향 DNS를 사용해서 클라이언트의 IP 주소를 호스트 명으로 변환하여 사용한다. 이것은 꽤 많은 시간이 걸려 트랙잭션을 느려지게 할 여지가 있다. 아파치에서는 클라이언트..
HTTP 완벽가이드 - 4장 커넥션 관리 TCP커넥션은 어떻게 이루어 지는가 전송 패턴 1. 첫번째로 URL에 호스트명을 추출한다. 2. 호스트명을 DNS서버를 통해서 IP로 바꾼다. 3. 포트번호를 얻는다. 4. TCP커넥션을 새성한다. 5~6 : 응답과 요청을 한다. 7 : TCP 커넥션을 끊는다. 전송 방식 HTTP가 메시지를 전송할 때, TCP 커넥션을 통해서 데이터를 순서대로 보낸다. TCP는 세그먼트라는 단위로 데이터 스트림을 잘게 나누고, 세그먼트를 IP 패킷이라고 불리는 봉투에 담아서 인터넷을 통해 데이터를 전달한다. 맨 아래쪽이 TCP 데이터 스트림 덩어리(chunk)이고 나머지는 TCP/IP가 정확히 데이터를 전달하기 위한 메타데이터들이다. TCP 소켓 프로그래밍 HTTP통신을 위해서 TCP/IP커넥션을 직접 설정하기에는 많은..
HTTP 완벽가이드 - 3장 HTTP 메시지 메시지의 흐름 메시지의 흐름을 가르키는 용어는 다음과 같다. 인바운드 클라이언트 -> 서버 로 메시지가 이동(요청)하는 것 아웃바운드 서버 -> 클라이언트로 메시지가 이동(응답)하는 것 다운스트림 HTTP의 모든 요청은 다운 스트림으로 흐른다. 메시지 구조 메시지는 다음과 같은 구조를 가진다. 요청 시작줄 GET /tools.html HTTP/1.0 CRLF 헤더 : Accpet : text/html, image/gif CRLF 응답 시작줄 : HTTP/1.0 200 OK CRLF 헤더 : Content-type : text/html CRLF CRLF 본문 : "Hello HTTP" CRLF 특이한 점은 CRLF(캐리지리턴)이다. 보통 프린터에 사용되는 인코딩에서 띄어쓰기(\n)과 같은 역할을 한다. 모..
HTTP 완벽가이드 - 2장 URL과 리소스 URL URL의 구조는 크게 세 가지로 나뉜다. 스킴 통신 프로토콜 부분(http)를 스킴이라고 부른다. 스킴은 웹 클라이언트가 리소스에 어떻게 접근하는지 알려준다. 서버의 위치 www.codns.com 부분이 서버의 위치다. 이는 웹 클라이언트의 리소스가 어디에 호스팅 되어 있는지 알려준다. 리소스 및 리소스 경로 /codns/codns.jsp 부분이 리소스의 경로이다. 경로는 서버에 존재하는 로컬 리소스 들 중에서 요청받은 리소스가 무엇인지 알려준다. URL 문법 다시 URL 구조를 바탕으로 URL 문법에 대해 자세히 알아보자. 스킴 사용할 프로토콜을 의미한다. 기본값은 없다. 유저, 패스워드 몇몇 스킴들은 유저와 비밀번호를 요청하는 경우가 있다. (FTP 가 한 예이다.) 아이디와 비밀번호를 : 로..
HTTP 완벽가이드 - 1장 HTTP 개관 6개월 전에 산 책인데, 몇번을 읽다 포기 한 줄 모르겠다. 이번 기회에 정리하면서 완독하는 것을 목표로 한다. 1장 HTTP 개관 1장에서는 HTTP 를 전체적으로 가볍게 훑고 넘어 간다. HTTP : 인터넷의 멀티미디어 배달 부 HTTP는 text부터 거희 대부분의 모든 미디어들을 전송 할 수 있다. 그리고 이것들을 웹 리소스라고 부른다. MIME 타입 데이터 포멧 라벨 원래는 메일 전송에 사용됬던 건데 성능이 좋아 HTTP에서 채택되었다고 한다. 웹 서버는 모든 HTTP 객체를 MIME타입을 붙힘 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types MIME 타입 MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려..
NAT과 DHCP 카페에서 와이파이로 연결된 인터넷 상에서 가상머신으로 ubuntu를 설치하려고 하니 DHCP 연결이 안된다는 에러가 발생한다. 무슨 문제인지 조금 추적해보다가 네트워크 IP를 할달하는 두 방법에 대해서 공부하게 됬다. NAT NAT 네트워크 주소 변환(영어: network address translation, 줄여서 NAT)은 컴퓨터 네트워킹에서 쓰이는 용어로서, IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다. NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. 가상 머신으로 운영체제를 실행하기 위해 이미지를 만들면 하드웨어 설..