본 게시글은 인프런 김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 을 기반으로 작성되었습니다.
인터넷 프로토콜(IP, Internet Protocol)은 인터넷에서 정보를 주고 받을때 사용하는 규약
입니다.
인터넷 프로토콜은 다음과 같은 일을합니다.
전달
패킷
이라는 통신 단위로 데이터 전달ip에는 출발 ip
도착 ip
로 구성되어 있지만 다음과 같은 문제점이 있습니다.
첫번째
비연결성
(connectionlessness)
두번째
비신뢰성
(unreliability)
세번째
프로그램 구분
이를 보완하기 위해 나온것이 TCP/UDP 입니다.
인터넷 프로토콜은 4단계로 이루어져 있습니다.(위에서 부터 아래로 출력)
TCP/UDP 를 만들고 IP로 감싸서 내보냅니다.
TCP(Transmission Control Protocol)
TCP 의 장점은 IP 의 문제였던 연결지향
,데이터 전달보증
, 순서 보장
을 하게됩니다.
SYN:접속요청
ACK:요청수락
이렇게 하면 클라이언트와 서버가 서로 믿을수 있게 되므로 신뢰할수 프로토콜이 됩니다.
최근엔 3번때 ACK와 데이터 전송을 같이 보내기도 합니다.
TCP 에서는 데이터가 성공적으로 전송이 되면 상대도 신호를 보내옵니다.
패킷 1,2,3,4 를 순서대로 보냈을때 1,3,2,4 순으로 도착하게 된다면
3,2,4 를 삭제하고 2부터 재요청을 하게됩니다.
서버최적화에 따라 내부에서 재조합을 하기도 합니다.
UDP(User Datagram Protocol) 는 IP와 거의 동일합니다.
ip에 포트,체크섬 만 포함된 최소한의 통신입니다.
3way handshake x
데이터 전달보증 x
순서보장
이 되지않습니다.
그렇기 때문에 속도가빠르고 단순한 형태입니다.(최소한의 백지 상태)
따라서 본인이 최적화를 원한다면 애플리케이션에서 기능을 확장해볼수 있습니다.
빠르고 단순하기때문에 HTTP3 에서는 UDP 로 전송을 하며
아직 표준안이 정해지진 않았지만 최근 각광받고 있는 프로토콜입니다.
ip는 1개인데 들어오는 데이터는 많습니다. 예를들어 게임하고 음악을 들으며
유튜브를 볼수있죠 그럴때 사용하는게 포트입니다. 같은 ip 내에서 데이터를 구분해줍니다.
IP는 외우기도 어렵고 자주 바뀝니다.
그래서 DNS(Domain Name System) 라는것을 사용해 영문/한글 주소로 사이트를 이용할수있습니다.
URI(Uniform Resource Identifier)
란 리소스를 식별하는 방법 입니다.
여기서 Locator(위치)
를 찾으면 URL Name(이름)
으로찾으면 URN 입니다.
즉 URI
는 가장 큰 개념이고 그아래 URL(위치)
URN(이름)
으로 구분됩니다.
URL 분석법
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
https
주로 프로토콜을 사용합니다.
http , https , ftp등등
http 는 포트 80
https는 포트443
을 주로 사용하기때문에 생략이 가능합니다.
www.google.com
443
search
?q=hello&hl=ko
query parameter
, query string
라고도 불립니다.잘 사용하는편은 아님