네트워크 내용은 '성공과 실패를 결정하는 1%의 네트워크 원리' 라는 책의 내용을 작성자가 정리한것임을 밝힙니다.
1. HTTP 리퀘스트 메시지를 작성한다.
- URL의 가장 앞에는 http:, ftp:, file: 등의 문자열이 따라 붙는데, 이는 엑세스 대상이 어떤 프로토콜을 가지고 있는지 나타낸다
- 사용자명과 패스워드는 생략이 가능하다
- ' // ' 는 이후 이어지는 문자열이 서버의 이름임을 나타낸다.
- URL에 따른 리퀘스트 작성은 브라우저가 담당한다.
#예시1번
http://user:password@www.kakao.co.kr:80/dir/file.html
<프로토콜><사용자명><"> <웹서버:도메인명><포트><파일의경로명>
#예시2번
ftp://user:password@www.kakao.co.kr:80/dir/file.html
<프로토콜><사용자명><"> <웹서버:도메인명><포트><파일의경로명>
#예시3번
file://localhost/c:/window/file1.zip
<컴퓨터명> <파일의경로명>
#예시 4번
http://www.kakao.tistory.co.kr/dir/
1.1 파일명을 생략하는 경우
- 예시 4번과 같이 파일의 경로명을 생략할 수 있다.
- 기본적으로는 'index.html' 또는 ' default.html'로 붙는다
1.2 HTTP의 기본개념
- 프로토콜 : 통신 동작의 규칙을 정한 것을 '프로토콜'이라 한다.
- 이 통신 프로토콜은 클라이언트(브라우저)와 서버가 주고받는 내용이나 순서를 정한 것 이다.
- 주고 내용
- 무엇을 : URI (Uniform Resource Identifier)
- 어떻게 : Method (Post, Get, Update, Delete)
- Header: 보충정보( +Data)
- Content
- 받는 내용
- Status Code
- Header
- Content
# method="Get"인 경우 메시지
GET /user/sample.txt?Field=userinfo&SendButton=SEND HTTP/1.1 #리퀘스트라인
# method="POST" 인 경우
POST /user/sample.txt HTTP/1.1 #리퀘스트라인
Field=userinfo&SendButton=SEND #메시지 헤더
# 공백
<메시지 Content> #메시지본문
# RESPONSE MESSAGE
HTTP/1.1 200 OK
Date: Sat, 12 Feb 2023 ~~~
<Another Tag> : <Value>
<Anotehr Tag2> : <Value2>
+ 헤더 필드의 종류는 굉장히 많으므로 필요에 따라 찾아보는것을 추천한다.
2. 웹 서버의 IP 주소를 DNS 서버에 조회한다.
- IP 주소의 기본
- IP주소 : 네트워크 번호 + 호스트 번호
- XX동 XX번지 => 네트워크 번호(어디 네트워크에 속하는지 나타냄)
- 김코딩 씨 => 호스트 번호(개별적으로 할당된 호스트의 주소를 나타냄)
- TCP/IP 네트워크 : 작은 서브넷을 라우터로 연결하여 전체 네트워크를 완성한 것을 말한다. (+작은 서브넷 : 허브에 몇 대의 PC가 접속된 것)
- 네트워크 번호 + 호스트 번호 = 32비트(4바이트)
- 몇바이트로 나눌지 기준이 존재하지 않는데, 이것의 기준이 되는게 '넷마스크' 이다.
- 넷마스크가 '1'인 부분은 네트워크 번호이고, '0'인 부분은 호스트 번호이다.
- IP주소 : 네트워크 번호 + 호스트 번호
- 도메인명과 IP주소를 구분하여 사용하는 이유
- IP 주소는 32비트, 즉 4바이트에 해당하는 개수밖에 없지만, 도메인 명은 적어도 수십 바이트부터 최대 255 바이트나 있다
- 라우터 부하가 증가하여 데이터 운반동작에, 시간이 증가한다. 즉 네트워크의 속도가 느려진다
- Socket 라이브러리가 IP 주소를 찾는 기능을 제공한다.
- DNS 서버에 IP 주소를 조회 한다는 것은 DNS서버에 조회 메시지를 보내고, 거기에서 반송되는 응답 메시지를 받는 것 이다.
- DNS resolver = '리졸버' 가 해당역할을 해주며, 얘는 Socket 라이브러리 안에 들어있는 부품화한 프로그램 이다.
- Socket 라이브러리 는 OS에 포함되어 있는 네트워크의 기능을 애플리케이션에서 호출하기 위해 모아놓은 부품이다.
- 리졸버 내부의 작동
- 리졸버 호출 시점에 애플리케이션(브라우저) 동작은 일시 정지하고 제어가 넘어간다
- 리졸버는 DNS 서버에 문의하기 위한 메시지를 작성한다 (by Socket라이브러리).
- 프로토콜 스택을 이용하여 메시지를 송신한다
- LAN 어뎁터를 통해 메시지가 DNS서버로 전달된다.