후라이
[인터넷 네트워크] IP | TCP/UDP | PORT | DNS 본문
1. HTTP
HTTP/HTTPS는 HyperText Transfer protocol로, 웹 브라우저와 서버 간에 데이터를 주고 받기 위해 사용되는 프로토콜이다.
웹 페이지를 요청하고, 서버가 이를 응답하는 과정이다.
HTTP를 알아보기 이전에, IP/TCP,UDP에 대해 더 알아본 후, Http를 공부하자!
2. IP
2.1) IP란?
너 아이피 주소 뭐야? 라는 말 한번씩 들어봤을 것이다.
IP는 Internet Protocol로, 인터넷에서 데이터를 주고 받기 위한 주소 체계이다.
모든 기기장치는 고유의 IP가 부여되며, 서버도 마찬가지이다.
우리가 사용하는 인터넷망은 사진보다 훨씬 복잡하다.
그럼 만약 클라이언트인 내가 서버에 무언가를 요청할 때, 내 요청은 어떻게 전달되는 것인가?
바로 IP가 패킷이라는 통신 단위로 해당 데이터를 전달하게 된다.
별 거 없다. 이렇게 생긴 IP 패킷이 내가 보내려고 하는 데이터를 감싼 후, 이 패킷이 서버까지 전달된다.
참고로 패킷 내부는 이렇게 복잡하게 생겼다.
이 안의 정보 하나하나에 대해서는 컴퓨터네트워크 공부를 하면 더 자세히 알 수 있다. (아니면 정보처리기사)
2.2) IP 프로토콜의 한계
IP 프로토콜도 한계가 있다.
- 비연결성 : 우선 전송하는 클라이언트는 내가 보낼 곳인 서버가 지금 패킷을 받을 수 있는 상태인지 아닌지에 대한 정보는 알지 못한다. 그럴 때, 패킷을 받을 대상이 존재하지 않거나 서비스 불가능 상태인데도 패킷은 전송이 되어버린다.
- 비신뢰성 : 패킷이 가다가 유실될 수 있다. 게다가, 보낸 순서대로 패킷이 도착하는 게 아니라, 순서가 꼬일 수도 있다.
3. TCP & UDP
3.1) TCP
TCP는 Transmission Control Protocol로 송신자와 수신자 간의 communication 방식이라고 생각하면 된다.
사진에서 볼 수 있듯이 TCP는 세번 사인을 주고 받는다.
이를 TCP 3 way handshake라고 하며, 이는 물리적 연결이 아닌 가상 연결이다.
해당 방식을 통해 데이터 전달이 보증되며, 순서가 보장된다.
SYN은 접속을 요청하는 것이다. 클라이언트 단에서 서버 단에게 접속을 요청하면
서버 단에서 요청 SYN에 더해 ACK 라고 하는 요청 수락을 보낸다.
그리고 마지막으로 클라이언트 단에서 이 요청 수락을 잘 받았다는 확인 ACK를 보내게 된다.
예) 만약 클라이언트가 패킷 1, 패킷 2, 패킷 3 순서로 서버에게 전송했을 때
: 서버에게 도착한 패킷 순서는 패킷 3, 패킷 2, 패킷 1이라고 할지라도 서버단에서 "패킷 2부터 다시 보내"라고 하는 요청을 보냄
3.2) UDP
UDP는 User Datagram Protocol로, TCP와 다르게 3 way handshake의 기능도 없으며, 데이터 전달과 순서를 보장하지 못한다.
그럼 왜 이 프로토콜을 사용하는가?
그저 단순하고 빠르기 때문이다. 그리고, IP와 거의 동일한 방식이며 이에 더해 PORT와 Checksum 정도가 더해진다.
3. PORT
그렇다면 포트는 무엇일까? 우리가 흔히 "포트번호"라고 말하듯이
TCP 패킷 내에는 출발지 port와 목적지 port를 가진다.
A port is a virtual point where network connections start and end.
PORT는 같은 IP 내에서 프로세스를 구분할 수 있다.
IP주소는 네트워크 상의 장치를 식별하는 고유한 주소라고 위에서 설명하였다.
그런데, IP 주소만으로는 동일한 장치에서 실행 중인 여러 애플리케이션을 구분할 수가 없다.
-> 그래서 포트 번호를 통해 특정 프로세스를 식별하는 것이다.
포트 번호는 0~65535 사이의 숫자로 할당된다.
- 0~1023: 시스템 예약 포트(예: HTTP는 80, HTTPS는 443).
- 1024~49151: 사용자 등록 포트.
- 49152~65535: 동적/임시 포트(주로 클라이언트 애플리케이션에서 임시로 사용).
- 20, 21 : FTP
- 23 : TELNET
- 80 : HTTP
- 443 : HTTPS
위 번호들과 같이 잘 알려진 포트들이 존재하므로, 0~1023은 사용하지 않는 것이 좋다.
4. DNS
내가 통신하고자 하는 서버의 IP 주소를 외우고 다니는 사람은 없을 것이다.
어렵기도 하며, 그럴 필요도 없고 IP는 변경될 수 도 있다.
우리는 DNS(Domain Name System)라는 일종의 인터넷 전화번호부가 있기에, 외우지 않아도 된다.
DNS는 도메일 명을 IP 주소로 변환한다.
더 자세히 설명하면, DNS는 사람이 읽기 쉬운 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환한다는 것이다.
이게 무슨 말이느냐 하면,
- 사용자인 우리가 구글 사이트를 들어가려고 할 때 구글의 아이피를 치고 들어가나?
우리는 웹 브라우저(크롬, 파이어폭스, 엣지 등의 클라이언트) 에 google.com을 입력한다. - 그럼 브라우저(클라이언트)가 DNS 서버한테 "도메인 이름을 IP 주소로변환해줘"라고 요청한다.
- DNS 서버는 데이터베이스를 조회해 해당 도메인의 IP 주소를 반환한다.
- 그럼 브라우저(클라이언트)는 반환된 IP 주소를 사용해 구글 서버에 접속한다.
[참고] : 인프런-김영한 <모든 개발자를 위한 HTTP 웹 기본 지식>
'HTTP' 카테고리의 다른 글
[HTTP] HTTP 상태 코드 (2) | 2024.12.15 |
---|---|
[HTTP] HTTP 메서드 활용 | 정적 / 동적 데이터 | HTML Form | HTTP API (1) | 2024.12.15 |
[HTTP] HTTP Method (3) | 2024.12.12 |
[HTTP] 모든 것이 HTTP | HTTP Message (1) | 2024.12.12 |
[URI & 웹 브라우저 요청 흐름] (0) | 2024.12.11 |