Olive Study Room
[CS] HTTP 프로토콜(HyperText Transfer Protocol), URL 본문
예전에 했던 크롤링 관련 프로젝트를 다시해보는데, 다른 사이트에서는 되는데 특정 사이트에서 되지 않는 것을 발견했다.
그 사이트만 URL 끝부분에 html이 붙어있는 것을 발견해서 HTTP프로토콜에 대해 공부해보기로 한다!
(이 문제가 아닐 수도..)
HTTP 프로토콜이란?
Request : client가 서버에 요청하는 것(이 경우 html을 요청)
Response : 서버가 요청받은 것을 주는 것
protocol : 준수해야하는 규칙
-> 크롬 검사에서 Network에 각 name을 누르면 header를 확인할 수 있다.
- Request를 위한 메시지, Response를 위한 메시지로 구분되어 있다.
- 웹 브라우저가 웹서버에게 요청하는 Request header를 만들고 웹서버는 Response header를 만들고, 웹브라우저가 받아서 화면에 띄워준다. -> 통신 프로토콜은 "나는 이렇게 줄 테니 넌 이렇게 받고 난 너가 준거 그렇게 받을게" 정도로 해석된다.
- 웹에서는 브라우저와 서버 간에 데이터를 주고받기 위한 방식으로 HTTP 프로토콜을 사용한다.
HTTP (1) : Request message 형식
Request Line : 웹 서버에 요청하는 정보, 브라우저가 사용하고 있는 버전
Requset Header : host 웹 서버의 주소
User-Agent 웹 브라우저. 쓰고 있는 브라우저. 서버가 원하는 브라우저가 아닐 시 차단도 가능함
Accept-Encoding 통신할 때 응답하는 데이터양이 많으면 압축하기도 하는데, 이 때의 압축 형식
If-Modified-Since 새로고침할 때마다 매번 새로 받아오지 않고 서버가 갖고 있는 것과 최근 새로고침했을 때와 최신 버전을 비교해서 최신인 것으로 받아줌
HTTP (2) : Response message 형식
Status Line : http 버전, 응답 결과, 응답 결과를 풀어쓴 것
Response Header : Content-Type 데이터 형식
Content-Length 데이터 크기
Content-Encoding 데이터를 압축해놓은 방식
Last-Modified 데이터가 최근 수정된 시점
--> 웹 브라우저가 Request message를 웹 서버에 보내면 서버는 Response message와 html을 돌려준다.
URL(Uniform Resource Locator), Domain
URL : 인터넷에서의 자원 위치
ip주소, URL 둘 다 사이트에 접속할 수 있다.
*ip란? 인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰, 타블릿, 서버 등)를 각각 식별할 수 있는 주소.
* 도메인과의 차이는?
https://www.naver.com/ 은 URL, 'naver.com' 부분은 도메인이다.
-> 도메인은 ip주소를 기억하기 어렵기 때문에 이름을 부여한 것!
-> 도메인이 URL에 포함된다고 보면 된다!
daum.co.kr 에서,
daum : 컴퓨터의 이름
co : 국가 형태의 최상위 도메인
kr : 대한민국의 NIC에서 관리하는 도메인을 의미
예를 들어 www.naver.com/pengpeng.html 과 같은 url은 naver.com에 있는 pengpeng.html을 불러온다는 의미.
크롤링시 위와 같은 html로 접근하게 되는 url에서만 값을 받아올 수 없는데.. 정녕 받아올 수 있는 방법이 없는 것일까?
다음에 고민해보도록 한다..
+ 추가 공부 필요 사항
https( = SLL) : http secure
전송하고 있는 내용을 가로채도 알 수가 없다(클라이언트와 서버만 알고 있다).
로그인할 때 https가 아니라면 의심해봐야한다.
Cache(저장)
한 번 들어갔던 사이트에 다시 들어갈 때 또 다운로드하지 않도록 저장해둔다. -> 성능 향상을 위해
Cookie
로그인하고 나중에 또 로그인하면 자동로그인 되는 것(웹 브라우저가 기억하고 있음)
쿠키값을 웹브라우저에 설정하면 접속할 때마다 쿠키값을 서버에 전송해서 사용자의 상태를 저장할 수 있다.
Web storage
쿠키보다 많은 양을 저장할 수 있고 보안도 우수하다.
proxy 서버
웹브라우저와 웹서버 사이에 중개 서버. 캐시를 대신해주고 보안 공격을 막아준다.
개발자 도구, wireshark
네트워크 모니터링하는 도구
공부 자료 : https://opentutorials.org/course/3385/21673 >> 생활코딩
https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_URL
'cs' 카테고리의 다른 글
[CS] OOP(Object Oriented Programming)란? (0) | 2021.06.06 |
---|---|
[CS] 동시성(Concurrency) 프로그래밍과 비동기(Asynchronous) 프로그래밍 (0) | 2021.04.04 |