on
네트워크 1.1
네트워크 1.1
* 성공과 실패를 경정하는 1%의 네트워크 원리 책을 정리한 내용입니다.
1.1 HTTP 리퀘스트 메시지를 작성한다.
1. 브라우저에 URL을 입력한다.
HTTP 는 HyperText Transfer Protocol이다.
프로토콜은 통신 동작의 규칙을 정한 약속을 의미한다.
2. 브라우저가 URL을 해독한다.
URL은 다음과 같이 나뉘어진다.
http: + // + 웹 서버명 + / + 디렉토리명 + / + ... + 파일명
ex) http://www.lab.cyber.co.kr/dir1/file1.html
맨 앞자리 http는 데이터 출처에 액세스 하는 방법, 즉 프로토콜을 기록한다. (Http이외에도 Ftp등이 있다.)
그 후 //는 다음 문자열이 서버의 이름임을 나타낸다.
웹 서버 다음은 데이터 출처의 경로명을 나타냅니다.
예시의 경우 www.lab.cyber.co.kr이 서버의 이름, dir1이 데이터의 디렉토리, file1.html이 원하는 파일명입니다.
3. 브라우저가 URL 해독 데이터를 이용하여 HTTP 리퀘스트 메시지를 만든다.
<메소드><공백><공백> → 이 첫 번째 행을 리퀘스트 라인이라고 한다.
<필드명>:<필드값> ——————————————
.
. 이 사이 부분을 메시지 헤더라고 한다.
.
——————————————
<공백 행>
<메시지 본문>
리퀘스트 라인
리퀘스트 라인은 맨 첫 행으로 메서드를 포함한 데이터를 가진다.
리퀘스트 메시지의 내용을 대략적으로 적어논 것이다.
메시지 헤더
리퀘스트 라인보다는 부가적인 정보를 적는다.
날짜, 데이터 종류, 언어, 압축 형식, 클라이언트나 서버의 소프트웨어, 데이터의 유효 기간, 최종 변경 일시 등을 적는다.
메시지 본문
메시지의 실제 내용을 적는다.
4. 리퀘스트를 받은 웹 서버에서 응답 메시지를 보낸다.
웹 서버에서 보내는 응답 메시지의 포맷은 리퀘스트 메시지와 거의 같다.
다만 응답 메시지는 첫 행에 리퀘스트 라인이 아니라 스테이터스 코드를 적는다.
스테이터스 코드는 404 Error 등과 같은 상태를 나타낸다.
5. 응답 메시지를 받아 데이터를 추출하여 화면에 표시한다.
응답 메시지를 이용하여 HTML, CSS, JS등을 이용하여 렌더링을 진행한다.
관련 기술 면접 질문
더보기 HTTP 0.9 / 1.0 / 1.1 의 차이는? 0.9 telenet-friendly protocol한 줄로만 요청했다. (메서드 + 경로) HTTP 헤더가 없어서 여러 컨텐츠 유형 파일을 전송할 수 없다. GET 메소드만 사용했다. HTTP의 초기버전으로 간단 클라이언트-서버의 요청, 응답을 수행했다.
1.0 요청, 응답 모두에풍부한 메타데이터를 포함하는 헤더를 제공한다.응답 직후 종료되는 접속 특성을 가진다. GET, POST, HEAD 메소드를 지원한다. 브라우저 친화적인 프로토콜이다.
1.1 성능 최적화와 기능 향상을 이뤘다. 파이프라인, 청크 전송, 압축/압축 해제, 가상 호스팅, 캐시 지원 등... GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS 메소드를 지원한다. 오래 유지되는 접속 특성을 가진다. 현재 일반적으로 사용되는 HTTP 버전이다.
HTTP / HTTPS의 차이는? HTTPS안전한 암호화 통신을 위해 SSL(Secure Socket Layer) / TLS(Transport Layer Security)를 사용한다.이러한 암호화를 통해 서버와 클라이언트간 양방향 암호화를 제공한다.
하지만 소요 시간이 오래 걸린다는 단점이 있다.
HTTP 통신하는 소켓 부분을 SSL/TLS 로 대체하는 방법이다. (HTTPS → SSL → TCP)
HTTPS는 HTTP + Secure의 약자이다. HTTP가 보안에 취약한 이유는? HTTP는 평문 통신이기 때문에 도청이 가능하다. 평문은 일반적으로 암호화되지 않고 전송, 저장되는 데이터(반대는 암호문) 통신 상대를 확인하지 않기 때문에 위장이 가능하다. 완전성을 증명할 수 없기 때문에 변조가 가능하다. POST 와 GET 메소드를 설명해주세요. GET 쿼리 문자열(key / value)은 URL로 전송됨. 특징 브라우저에 기록이 남음민감한 정보를 다룰 때는 사용안함 (URL등 기록 남아서)데이터를 요청 할 때만 사용됨 (수정은 불가능함) 길이 제한이 있음 (따라서 보내는 데이터가 많아야 수백 바이트 밖에 되지 않음. 그 이상은 POST 메서드 사용) 북마크 될 수 있음 cached 될 수 있음 지정된 리소스에서 데이터를 요청하는 데 사용됨
/test/demo_form.php?name1=value1&name2;=value2 POST HTTP 요청의 요청 본문에 저장됨. 리소스를 생성 / 업데이트하기 위해 서버에 데이터를 보낼 때 사용됨 특징 브라우저에 기록 안 남음데이터 길이에 제한 없음 북마크 못 함 cached되지 않음
POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2;=value2 GET 메소드의 메시지 본문이 필요없는 이유? GET 메서드는 메서드와 URI만으로 필요한 정보가 다 있으므로 아무 것도 없음. JS에서 HTTP request를 동기로 호출하고 값을 처리하면 발생하는 문제점은? request에 대한 response가 길어질 수도 있으므로 절차 지향적 코드가 제대로 작동하지 않을 수 있다.
이런 경우 Callback 함수를 만들어 호출하여 해당 request의 response를 받아 그 값으로 다른 함수를 실행해야 함.
from http://developerlee.tistory.com/61 by ccl(A) rewrite - 2021-12-27 21:00:47