본문 바로가기
WEB

[WEB/HTTP] 01. 인터넷 네트워크

by 상후 2021. 8. 7.
728x90
반응형

 

 

이 글은 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 학습하며 정리한 내용입니다.

저처럼 HTTP를 알고 싶거나, 겉핥기로 알고 있는 분들에게 위 강의를 추천합니다.

 

정리한 내용 중 틀린 내용이 있거나 의견을 남겨주시면 수정하겠습니다.

감사합니다.


1. IP(인터넷 프로토콜)

  • 컴퓨터 둘은 어떻게 통신할까?

거대한 인터넷 망을 통해 두 컴퓨터가 통신하는데 가장 직접적인 연결 방법으로는 IP(인터넷 프로토콜) 이 존재한다.

 

  • IP(인터넷 프로토콜)

- 지정한 IP 주소(IP Address)에 데이터 전달

- 패킷(Packet)이라는 통신 단위로 데이터 전달

 

IP 주소만으로 통신을 하는 방법인데, 출발지 PC에서 목적지 PC의 IP를 입력하고 통신을 시도합니다.

이때, 목적지 PC의 상태와 상관없이 무조건 패킷을 전달하기 때문에 한계가 존재합니다.

 

  • IP 프로토콜의 한계

위에서 잠깐 이야기했듯이 인터넷 프로토콜은 여러 이유로 한계가 존재합니다.

 

- 비연결성

    - 위 내용과 동일, 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 무조건 전송합니다.

    - 우편과 동일, 내가 친구한테 우편을 보내면 그 친구가 집에 살고 있지 않아도 나의 우편은 전송함.

 

- 비신뢰성

    - 인터넷 망은 수많은 노드들로 구성되어있는데,

      목적지까지 가기 위해 거치는 수많은 노드 중에 어떠한 이유로 중단되어 패킷 소실

    - 패킷을 통해 데이터를 보낼 때, 용량이 큰 데이터는 분할해서 전송하는데 내가 보낸 데이터 순서와,

      도착지에서 받은 데이터 순서가  다를 수 있음

    - 일반적으로 1500 byte가 넘으면 분할해서 전송한다고 합니다.

 

- 프로그램 구분

    - 컴퓨터는 1개의 IP Address를 가지는데, 1대의 컴퓨터와 통신하는 애플리케이션이 둘 이상이라면?

      어떤 애플리케이션과의 통신인지 구분할 수 없다. 

 

이러한 이유들로 IP 프로토콜은 한계가 있고, TCP 프로토콜을 사용하여 위 문제점들을 보완할 수 있습니다.


2. TCP / UDP

  • 인터넷 프로토콜 스택의 4 계층, TCP/IP 4 계층
4계층 : 애플리케이션 계층 HTTP, FTP
3계층 : 전송 계층 TCP, UDP
2계층 : 인터넷 계층 IP
1계층 :네트워크 인터페이스 계층 LAN

1 계층으로 내려갈수록 물리적인 계층

위에서 학습한 인터넷 프로토콜이 2 계층에 존재하고, 인터넷 프로토콜의 한계를 극복하기 위해 3 계층에 TCP/UDP가 존재합니다.

 

  • IP 패킷 정보

인터넷 프로토콜은 패킷단위로 데이터를 전달합니다.

그 패킷에 구성되어있는 정보는 크게 다음과 같습니다.

 

1. 출발지 IP Address

2. 목적지 IP Address

 

  • TCP/IP 패킷 정보

인터넷 프로토콜의 한계를 극복하기 위해 TCP에서는 IP 패킷을 감싼 형태로 TCP/IP 패킷을 생성합니다.

TCP/IP 패킷에 추가되는 정보는 크게 다음과 같습니다.

 

1. 출발지 PORT

2. 목적지 PORT

3. 전송 제어

4. 순서

5. 검증 정보

 

  • TCP 특징

TCP - Transmission Control Protocol - 전송 제어 프로토콜

 

1. 연결 지향 - TCP 3 way handshake (가상 연결)

클라이언트와 서버가 통신을 하기 전 서로 3번 연결을 확인한 후 통신하는 방식인터넷 프로토콜의 비연결성을 해결

실제로 물리적으로 클라이언트와 서버가 연결된 것이 아니라, 논리적으로 서로 연결 가능상태를 의미

즉, 3 way handshake를 통해 클라이언트와 서버의 연결가능 상태를 확인 후 통신

 

2. 데이터 전달 보증

클라이언트가 데이터를 전송하면, 서버는 데이터를 잘 받았다는 응답을 줘서 데이터가 잘 전달되었는지 보증받을 수 있음인터넷 프로토콜의 비신뢰성 중 패킷 소실을 모니터링 가능

 

3. 순서 보장

TCP/IP 패킷에 순서 정보를 담아 통신하므로 응답 컴퓨터에서 순서대로 데이터가 도착하지 않았다면 순서가 꼬인 패킷부터 다시 요청

인터넷 프로토콜의 비신뢰성 중 데이터 순서 불일치 해결 가능

 

  • UDP

UDP - User Datagram Protocol - 사용자 데이터그램 프로토콜

 

1. 하얀 도화지에 비유(기능이 거의 없음)

2. 인터넷 프로토콜(IP)과 거의 같다. PORT와 체크섬 정도만 추가

3. 데이터 전달, 순서가 보장되지 않지만 단순하고 빠르다. 그래서 애플리케이션에서 추가 작업이 필요

 

  • PORT

TCP/UDP 공통으로 추가된 정보인 PORT 번호는 인터넷 프로토콜의 프로그램 구분 문제를 해결할 수 있다.

한 대의 PC에서 둘 이상의 애플리케이션과 통신할 때 PORT 번호를 통해 구분하여 통신한다.

 

출처 : [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 강의

위 사진만큼 PORT를 이해시켜주는 사진은 아직 보지 못했다.

 

0 ~ 65535 : 할당 가능한 포트번호

0 ~ 1023 : 잘 알려진 포트번호, 사용하지 않는 것이 좋다.

 

  • DNS

IP 주소는 기억하기 어렵다. 그리고 변경될 수 있다.

고로 요청하는 클라이언트 입장에서 모든 애플리케이션의 IP를 외울 수도 없고, 심지어 변경이 가능하니 골치 아프다.

그래서 존재하는 것이 DNS(Domain Name System)이다.

 

쉽게 생각하여 IP 주소의 전화번호부와 같다.

도메인 명을 IP주소로 변환해주는 역할을 한다.

 

도메인명 : google.com

클라이언트가 도메인명을 넣어 요청을 하면 DNS가 해당 도메인과 매핑된 IP주소를 반환

즉, IP주소를 굳이 입력하지 않더라도 통신을 할 수 있다.

 

우리가 전화걸 때 전화번호를 외워서 걸지 않듯이..


학습 후기

겉핥기로 알고 있던 내용을 좀 더 명료하고 이해가 비교적 쉽게 할 수 있었다.

글로 정리를 하려고 하니 역시 쉽지않지만, 재밌는 것 같다.

 

 

 

 

 

 

 

728x90
반응형

'WEB' 카테고리의 다른 글

[WEB/HTTP] 06. HTTP 상태코드  (0) 2021.08.22
[WEB/HTTP] 05. HTTP 메서드 활용  (0) 2021.08.16
[WEB/HTTP] 04. HTTP 메서드  (0) 2021.08.15
[WEB/HTTP] 03. HTTP 기본  (0) 2021.08.14
[WEB/HTTP] 02. URI와 웹 브라우저 요청 흐름  (1) 2021.08.08

댓글