목차
내용
1. 수업 소개
- 1990년 팀버너스리가 웹을 세상에 내놓았을 때 크게 4가지로 나눠졌습니다.
- 1. HTML : 웹 페이지를 만드는 컴퓨터 언어
- ex) 네이버 포탈 페이지
- 2. URL, URI : 원하는 웹페이지 방문들 도와주는 주소 체계
- ex) www.naver.com
- 3. Web browser, WebServer : 웹 페이지를 주고 받는 소프트 웨어
- ex) Chrome
- 4. HTTP : 웹 브라우저가 웹 서버가 통신을 할 때 사용하는 규칙
- 사용자가 알 수 없음
- 3을 켜서 2를 입력하면 4을 통해 1이 뜬다.
- 웹이 아무리 달아나도 위 4가지 요소에서 벗어날 수 없다.
- 1. HTML : 웹 페이지를 만드는 컴퓨터 언어
- 초기 HTTP는 단순했다. 그러나 사용량이 어마어마하게 늘면서 HTTP는 풍부한 기능을 가진 프로토콜로 발전
- 지금은 HTML 같은 단순 텍스트 뿐만이 아닌 아미지, 오디오, 동영상 같은 멀티미디어 파일도 전송하는 매우매우 중요한 프로토콜
- HTTP는 웹을 넘어서 인터넷을 동작하는 근간이라고도 할 수 있다!!
2. HTTP 소개
- HTTP는 request, reponse 를 위한 메세지로 구분 되어있다.
- HTTP는 추상적이지만 계속 얘기하고 자꾸 생각하면 물질처럼 손에 잡히는 것처럼 느낄 수 있다.
- 브라우저 - 개발자 도구 - Network에 웹 브라우저 - 웹 서버 간의 주고 받는 내용을 볼 수 있다.
- Request Header : 웹 브라우저가 웹 서버에게 요청
- ex) 메세지 해석 : "GET 방식으로 a.html을 요청하고 지금 내가 사용할 수 있는 통신 방법은 HTTP 1.1이다"
- Response Header : 웹 서버가 웹 브라우저에게 응답
- ex) 메세지 해석 : "어, 나도 HTTP 1.1로 통신하고 200(성공적으로) a.HTML 보내 줄게"
- Contents-Length : 길이, Content-Type : 타입
- Request Header : 웹 브라우저가 웹 서버에게 요청
- 웹 브라우저는 사용자가 물어본 정보를 웹 서버에게 대신 물어봐주는 기계
- 응답한 정보를 화면에 적당히 보여주는 것
3. Request message
- 자 그럼 이제부터 웹 브라우저와 웹 서버가 주고 받는 메세지를 좀 자세하게 들여다 봅시다.
- Request Header 설명
- 첫번째 행 : 요청 행위
- 구글에서 'http header' 이미지 검색
- Request Message Header
- Request Line : 첫번째 행
- Requeset Headers : 둘째행부터
- A blank line seperates header & body : Header - Body 구분 라인
- Request Message Body
- Request Message Header
- Request Line
- ex) Get /1.html HTTP/1.1
- Get : 웹 서버의 정보를 가져오는 메소드
- /1.html : 웹 서버에 요청한 정보
- HTTP1.1 : 웹 브라우저가 사용하고 있는, 사용할 수 있는 HTTP 버전이다
- ex) Get /1.html HTTP/1.1
- Host : 반드시 적어야 하는 것. 인터넷에 연결된 컴퓨터 한 대 한 대를 식별하는 이름
- ex) localhost:8080
- 우리가 요청하는 사이트의 웹 서버의 주소를 적은 것
- 하나의 웹 서버가 여러 개 도메인 서비스 가능(좀 어려운 얘기)
- A라는 웹 서버가 A닷컴, B닷컴 각 다른 웹 사이트를 보여줘야 한다.
- = 가상호스트
- ex) localhost:8080
- User-Agent
- ex) Mozilla/5.0~
- 웹 브라우저의 다른 표현
- 요청하는 웹 브라우저가 어떤 웹 브라우저인지 보여준다.
- ex) 나중에 통계 같은 걸 낼 때 어떤 브라우저 사용자가 많이 접속하는지 알 수 있다.
- ex) chrome이나 firefox가 아닌 로봇이 접근하는 경우가 있다. 이때 차단할 수도 있다.
- Accecp-Encoding
- ex) gzip, deflate, br
- 웹 브라우저와 웹 서버가 통신할 때 응답하는 양이 많으면 그걸 압축해서 전송하면 웹 브라우저가 압축을 풀어서 처리
- 네트워크 자원 아낄 수 있다.
- 이 웹브라우저는 어떤 압축 방식을 지원합니다. 라고 알려주는 것
- If-Modified-Since
- 지금 우리가 1.html을 요청 했잖아요, 또 요청할 때 마다 다운 받는 건 비효율적
- 웹 브라우저가 서버에 전송할 때 내가 요청한 파일은 마지막으로 언제 다운 받은지를 알려줌
- 웹 서버는 자기가 갖고 있는 파일과 비교하여 최신 파일 보내준다.
- 최신이 아니면 다운하지 않는다. 전송할 필요 없는 것.
4. Response message
- 자 이번 시간에는 응답 메세지에 대해 좀 자세하게 살펴보도록 하죠
- 구글 http response header format 이미지 검색
- 첫번째 행 : status (상태)
- 서버가 응답했을 때 잘 됐는지, 안 됐으면 어떻게 안 됐는지 알려주는 자세한 정보
- version, status code, phrase 3가지로 구성
- version
- HTTP version
- status code
- 응답 결과에 대한 얘기
- 1xx : Information Code
- 어떤 정보를 주기 위함(이건 잘 쓰진 않아요)
- 2xx : Success
- 긍정적, 그중 200은 가장 중요한 성공 메세지, 다른 2xx는 따로 찾아볼 것
- 3xx : Redirection
- ex) A닷컴으로 접속했는데 서버가 3xx를 응답하면 우리 웹 브라우저가 다른 곳으로 바로 이동해요
- 4xx : Client Errors
- 클라이언트 에러
- 404 Error
- 어떤 주소로 접속 했는데 서버에 없다, 없는 걸 요청해서 찾을 수 없다.
- 403 Error : Forbidden
- 접속하면 안 되는 곳에 접속 했을 때
- ex) 관계자 외 출입 불가 , 당신이 오면 안 되는 곳입니다.
- 5xx Error : Server Error
- 서버쪽 에러
- 500 Error : Internal Server Error
- 서버 내부에 어떤 문제 있어서 보여 줄 수 없습니다.
- phrase
- 응답 결과를 사람이 이해하기 쉽게 말로 풀어쓴 것
- 두번째 행
- 유명한 헤더 위주로 알아보겠습니다.
- Content-Type
- 웹 서버가 응답할 때 text/html 이다. (text:응답, html:컴퓨터 언어)
- Content-Length
- ex) 응답하는 이 Contents의 전체 크기는 1434이다.
- Content-Encoding
- ex) gzip으로 압축 했으니까 gzip으로 풀어서 읽으세요.
- Last-Modified
- 이 정보는 마지막으로 언제 수정되었습니다.
- 첫번째 행 : status (상태)
- 즉 웹 브라우저는 Request message를 생성하고 웹 서버에 전송하고 인터넷을 통해 웹 서버에 보내주면 응답 메세지를 만들어준다. (Response message + html 소스)
- 이를 참조해서 사용자에게 화면을 보여준다.
5. 수업을 마치며
- 지금까지 우리는 HTTP에 대해 필수적으로 알아야할 것들을 충분히 알아봤습니다.
- 더 알아보는 것은 무의미 합니다. 여러분들은 혼자 학습이 가능한 정도가 됐습니다.
- 그럼 여러분이 할만한 주제들을 던지고 물러날테니 알아서 찾아보시기 바랍니다.
- HTTP, HTTPS(=ssl) 차이를 아시나요?
- HTTP가 세상에 처음 나왔을 때 세상은 그렇게 위험하지 않았습니다.
- 웹으로 그렇게 심각한 정보를 다루지 않았어요.
- 30년이 지난 지금 웹으로 군사, 금융, 사생활 정보를 다루죠
- 즉 당신이 HTTP를 쓴다면 누군가 보고 있는 것으로 간주해야 합니다.
- HTTPS로 전송하면 전송하는 내용을 가로채도 당사자들만 알 수 있습니다.
- 암호화되어 있거든요
- HTTPS가 아닌 사이트에서 login을 요구하면 여러분은 그 사이트를 이용하지 말아야 합니다.
- 서비스를 만드는 생산자라면 운영하는 그 사이트는 HTTPS를 꼭 도입해야 합니다.
- 그렇지 않으면 정보 담당자로 마음가짐이 부족한 것입니다.
- HTTP가 세상에 처음 나왔을 때 세상은 그렇게 위험하지 않았습니다.
- Cache
- 돈이 아니라 저장한다는 뜻이에요.
- 이미 다운 받은 저장된 파일을 읽어서 성능을 향상 시키는 기법
- 풀기 어려운 문제가 있어요
- 내용이 갱신 됐을 때도 웹 브라우저는 그 사실을 알아채지 못합니다.
- 이런 경우 Ctrl + F5 를 누르면 강제로 Cache가 갱신됩니다.
- 하지만 일반 사용자는 Cache가 갱신 됐는지 모릅니다.
- 내용이 갱신 됐을 때도 웹 브라우저는 그 사실을 알아채지 못합니다.
- Cache-control, pragma
- Cache 갱신을 일반 사용자가 모를 때 해결하기 위한 기법
- 캐시를 제어하는 테크닉
- 비교적 최신 기술인 애플리케이션 Cache도 이러한 목적으로 고안된 기술
- 성능 향상에 관심이 간다면 Cash를 살펴보십시오.
- Cookie
- 개인화도 중요한 문제입니다.
- 쇼핑몰 장바구니 담기, 로그인 유지 등은 웹 사이트가 기억 하는 것, 사용자 상태 유지
- 귀여운 이름의 기술을 이용해서 cookie값을 웹 브라우저에 설정하면 접속 할 때마다 그 설정되어 있던 cookie 값을 서버에 전송하는 걸 통해서 사용자의 상태를 유지할 수 있고 식별할 수 있습니다.
- Web storage
- cookie보다 훨씬 많은 정보를 저장하고 보안쪽으로도 우수한 기술
- 주목할만한 기술입니다.
- Proxy
- 웹 브라우저와 웹 서버 사이에 proxy라고 불리는 중계 서버를 둘 수 있다.
- 중간에 있는 서버가 캐시를 대신 해주거나 보안과 관련된 공격을 막아주거나 적당히 자용자 요청을 여러대 서비스로 분산
- 네트워크 모니터링 도구
- Developer tools > Network
- wireShark
- 오픈 소스
- 어렵지만 익숙해지면 여러분께 강력한 힘들 줄 수 있을 것
- 컴퓨터에서 일어난 모든 네트워크를 트래픽을 감시할 수 있는 강력한 도구
- HTTP, HTTPS(=ssl) 차이를 아시나요?
- 하이퍽 텍스트라는 도로의 도로라고 할 수 있는 HTTP에 좀 익숙해지셨나요?
- 여기까지 오시느라 고생하셨고 축하드립니다.
후기
생활 코딩님 덕분에 추상적이었던 HTTP를 물질처럼 생각하게 되었습니다.
양질의 강의를 제공해주셔서 감사합니다.
필기 사진
![]() |
![]() |
![]() |
![]() |
'네트워크' 카테고리의 다른 글
[SMTP ERROR] SPF check for [xxx.com] does not pass with ip (0) | 2022.12.21 |
---|