Http 기본 (1)
1. 데이터 전송?
- 수 많은 노드로 연결된 인터넷 망에서
IP
라는 주소를 통해 데이터를 전달 - 데이터는
패킷
이라는 단위로 전송됨 - IP만을 가지고 데이터를 전송하게 되면 발생하는 문제들이 있음
- 주소가 잘못 됐으면? 받을 사람이 상태가 이상해서 못받으면? 중간에 패킷이 사라지거나 순서대로 안오면? ip에 갔더니 서비스가 여러개라 어느 서비스랑 통신해야하는지 모르겠으면?
2. TCP, UDP
- 인터넷 프로토콜 스택 중 전송 계층
- IP 패킷을을
TCP 세그먼트
로 한번 더 감쌈 TCP
(Transmission Control Protocol)- TCP 세그먼트에는 ‘연결’, ‘전달’, ‘순서’에 대한 정보가 있음
- 연결 보장 - TCP 3 way handshake( syn - syn+ack - ack ). 즉, 사전에 연결작업을 통해 수신하는 곳을 확인한 후 전송 (신 - 신에크 - 에크로 연결 확인 후 데이터를 보내지만, 요즘은 최적화하여 세 번째 에크에 같이 보내는 경우가 많음)
- 전달 보증 - 연결 보장에서 나오는 신뢰성
- 순서 보장 - 패킷 순서가 바뀌어 도착하면 잘못된 순서부터 다시 보내라고 요청함
UDP
(User Datagram Protocol)- IP 패킷에
PORT
와Checksum
정도만 추가됨. - 때문에 연결보장 및 순서보장이 되지 않지만, 그만큼 사용자가 여러가지 최적화 기능을 구현할 여지가 있음
- IP 패킷에
3. PORT
IP
에서 각 어플리케이션을 특정하게 해주는 연결주소- 0~65535 까지 있지만, 0~1023은 컨벤션들이 있기 때문에 거의 사용하지 않음
- FTP : 20, 21
- TELNET : 23
- HTTP : 80
- HTTPS : 443
4. DNS
- IP 주소를 대체해서 문자로 사용하게 해주는 서비스 혹은 시스템
DNS
서버가 있고, 거기에는 도메인과 IP 관계가 매핑 된 테이블이 있음.- 즉, google.com을 인터넷 주소창에 치면 DNS 서버에서 IP주소를 찾아서 가게 됨.
- 좋은 점 1 : 기억하기 쉽다
- 좋은 점 2 : 연결에 있어서 한 단계를 더 두기 때문에 IP주소 변경에도 훨씬 유리하다 (DNS 서버 테이블 값만 바꿔주면 된다!)
5. URI
- Uniform Resource Identifier. 리소스(Resource)를 통일된 방식(Uniform)으로 식별하게 해주는 식별자(Identifier)
- 즉, 식별해 주는 것을 말하기 때문에
URL
,URN
은 이 안의 개념이라고 할 수 있다. - 식별자의 개념으로 L (Locator)는 위치를 지정하고, N(Name)은 이름을 부여한다. 이에 따라 쓰이는 곳이 달라질 수 있다.
- 현재는 URN은 거의 쓰지 않기 때문에 URI와 URL을 거의 혼용해서 사용해도 크게 무리가 없다.
URL
-
URL의 구성
scheme://[userinfo@]host[:port][/path][?query][#fragment] https://www.google.com:443/search?q=hello&hl=ko
- 프로토콜
- http, https, ftp 등
- 유저정보
- 요즘은 사용 안함
- 호스트
- 도메인명 또는 IP주소
- 포트
- http는 80, https는 443을 주로 사용하며, 포트는 생략 가능
- path
- 리소스 경로. 계층적 구조. 우리에게 익숙한 윈도우 폴더 형태로 리소스에 접근함.
- query (= query parameter, query string 으로 불림)
- ?로 시작하고 &로 체이닝 가능
- key=value 형태
- fragment
- html 내부 북마크 등에 사용하며, 서버에 전송하는 정보는 아님
- 프로토콜
6. 웹 브라우저의 요청흐름
-
웹 브라우저 주소창에
https://www.google.com/search?q=hello&hl=ko
를 작성하고 Enter -
웹 브라우저는
HTTP 메시지
를 만든다.GET /search?q=hello&hl=ko HTTP/1.1 HOST: www.google.com
-
SOCKET 라이브러리를 통해 OS로 전달된다.
-
TCP/IP 패킷
이 생성되고 그 안에HTTP 메시지
가 담긴다. -
해당 패킷이 네트워크 인터페이스를 통해 인터넷으로 보내진다.
-
요청을 받은 호스트가 패킷을 까서
HTTP 메시지
를 확인하여 작업을 처리한다. -
처리한 후 위 과정처럼
TCP/IP 패킷
을 생성하고 그 안에 응답HTTP 메시지
를 담아서 인터넷으로 보낸다. -
해당 패킷이 다시 나에게 도착한다.
마지막 수정일시: 2022-12-16 14:44
댓글남기기