HTTP | 섹션 1. 인터넷 네트워크

728x90

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC#

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술

www.inflearn.com

 

🟦 섹션 1. 인터넷 네트워크

이번 섹션에서는 인터넷 통신, IP, TCP/UDP, PORT, DNS 에 대해 학습한다.

⬛ 1. 인터넷 통신

Q. 인터넷망에서 컴퓨터들은 어떻게 통신하는가?

예를 들어서, 클라이언트 옆에 서버가 바로 존재한다면 간단히 케이블만연결해서 메시지를 보내면 될 것이다.
그런데 클라이언트와 서버 사이에 복잡한 ‘인터넷망’이 존재한다.
클라이언트가 한국에 있고, 서버가 미국에 있다면, 클라이언트가 보낸 메시지는 여러 중간 노드들을 거쳐서 안전하게 미국 서버에 도착해야 한다.
이때, 어떤 규칙으로 미국 서버에 안전하게 도착할 수 있는지 이해하려면 IP 프로토콜에 대해서 이해해야 한다.

⬛ 2. IP (인터넷 프로토콜)

한국 클라이언트가 미국에 있는 친구에게 메시지를 보내고 싶다면 무언가 최소한의 규칙은 있어야 한다. 이때 ‘패킷’이라는 규칙으로 보내야 한다.

◼️ IP 주소 부여

  • 클라이언트, 서버 모두에 IP 주소가 부여되어 있다.

◼️ IP 의 역할

  • 지정한 IP 주소에 데이터를 전달
  • 패킷 이라는 통신 단위로 데이터 전달

◼️ IP 패킷 정보

  • 전송 데이터가 “hello world”라고 해보자.
  • IP 패킷에는 (출발지 IP, 목적지 IP, 전송 데이터 등) 을 담는다.

◼️ ⇒ 클라이언트 ‘패킷’ 전달

  • 인터넷망에 내가 보낼 패킷을 던지면 IP 프로토콜에 의해서 (중간 서버들도 그 규약을 따르고 있기 때문에) 내부적으로 출발지, 목적지를 구분하며 최종적으로 (도착 서버 IP 주소)까지 정확히 도착시킨다.

◼️ ⇒ 서버 ‘패킷’ 전달

  • 서버도 마찬가지로 새로 메시지를 만들어 패킷에 (출발지, 도착지 IP) 등을 담아 클라이언트에게 보낼 것인데, 이떄 인터넷망이 너무 복잡하기 때문에, IP 프로토콜 만으로는 한계가 있다. 요청할 때와 응답할 때가 서로 다른 곳으로 전달될 수도 있다.

◼️ IP 프로토콜만으로 전달하는 것의 한계

1) 비연결성 → 대상이 서비스 불능상태여도 모르고 패킷 전송함

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 그것을 모르기 때문에 계속해서 패킷 전송

2) 비신뢰성 → 패킷의 소실(유실) or 패킷 전달 순서의 문제 발생

  • 중간에 패킷 사라지면? 패킷이 순서대로 안오면? - 패킷이 유실될 수 있다.

3) 프로그램 구분 X → 정확이 어떤 프로그램을 사용중인지 구분X

  • 같은 IP를 사용하는 서버에서 ‘통신하는 어플리케이션’이 둘 이상이라면? 어떤 프로그램인지 구분이 안된다.

⬛ 3. TCP / UDP

  • TCP와 UDP는 IP 바로 위에 있는 프로토콜이다.

◼️ 프로토콜 4계층

  • IP 프로토콜에서 중간에 패킷이 손실 or 순서 상이했던 문제를 ‘TCP 프로토콜’이 해결해 준다.
  • Hello world’ 라는 메시지를 보낼 때 Socket 라이브러리를 통해 OS 계층에서 TCP 정보가 감싸진다. 그 밑에 IP 패킷이 생성되어 IP와 관련된 정보도 생성하고, 그 안에 TCP와 관련된 정보를 포함시키다. 이 메시지가 랜카드를 통해서 밖으로 나갈 때 ‘이더넷 프레임’에 감싸져 서버로 나가게 된다.

 

◼️ TCP와 IP로 감싸진 ‘전송 데이터’ 상태 그림

  • 전송할 데이터 위에 TCP 정보가 감싸진다.
  • 그 위에 IP 정보가 감싸진다.

TCP 와 관련된 정보를 보면 알 수 있듯이, IP 프로토콜에서 해결 안된 ‘순서 제어 문제들’을 TCP 프로토콜 덕분에 해결이 되는 모습이다.


◼️ 1) TCP (전송 제어 프로토콜) Transmission Control Protocal 특징

(1) 연결 지향적

  • TCP 3 way handshake(가상 연결)

(2) 데이터 전달 보증

-메시지에 TCP 프로토콜이 포함되어 있으면 메시지 전송할 떄 서버에서 잘 받았다고 닷 ㅣ보내기 때문에 클라이언트가 메시지를 잘 전달했는지 보증된다.

(3) 순서 보장

-TCP 정보 안에는 전송 제어, 순서, 검증 정보가 있기 때문에, 데이터가 패킥 단위로 나뉘어 보내져 순서가 무작위로 보내지게 되더라도, 내부적으로 최적화하는 로직에 따라 순서가 보장된다.

→ 이 떄문에 TCP를 신뢰할 수 있는 프로토콜이라고 부른다.

(4) 신뢰할 수 있는 프로토콜

(5) 현재는 대부분이 TCP 사용

 

◼️ 2) UDP ( 사용자 데이터그램 프로토콜) User Datagram Protocol 특징

  • TCP는 데이터 양도 많고 3 way handshake 때문에 전송 속도가 느린 반면, UDP는 아무것도 없기 때문에 상대적으로 전송 속도가 빠르다.

(1) 하얀 도화지에 비유 가능 (기능이 거의 X)

(2) 연결지향X

(3) 데이터 전달 보증 X

(4) 순서 보장 X

(5) (장점) 데이터 전달 및 순서 보장되지 않지만, 단순해서 빠름 O

⇒ UDP 특징 정리

  • IP와 거의 같다. IP에 [PORT + 체크섬] 정도만 추가됨
  • 애플리케이션에서 추가 작업 필요

⬛ 4. PORT

Q. 한 번에 둘 이상을 연결하려면 ?

  • 클라이언트에서 게임, 화상통화, 웹 브라우저 등등 여러 일을 하고 있다면, 여러 개의 서버와 통신해야 한다.
  • 클라이언트 IP 에 패킷이 올텐데, 이 패킷이 (게임/화상통화/웹 브라우저) 중 어디에서 온 패킷인지 구분이 안된다.
  • 이럴 떄 사용하는 것이 PORT 이다.

→ IP 는 목적지 서버를 찾는 용도이고,

→ PORT 는 서버 안에서 돌어가는 애플리케이션을 구분하는 용도이다.

◼️ PORT | 포트란 ?

  • 같은 IP 내에서 프로세스를 구분하는 것이다.
  1. 0 ~ 65535 할당 가능
  2. 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
  • FTP : 20, 21
  • TELNET : 23
  • HTTP : 80
  • HTTPS : 443

⬛ 5. DNS

  • IP주소의 문제점 : 길어서 기억하기 어렵다. 중간에 변경될 수도 있다.

◼️ DNS | 도메인 네임 시스템 (Domain Name Service)

  • 도메인 명을 IP 주소로 변환하는 시스템

→ 클라이언트가 DNS서버에 도메인명에 맞는 IP 주소를 달라고 요청하면, DNS 서버가 그에 맞는 IP주소로 응답을 하고, 클라이언트도 서버에서 원하는 도메인으로 접속 가능해진다.


🟩 섹션1 정리

1) 인터넷에서 복잡한 인터넷망을 경유하여 메시지를 보낼 때 제일 먼저 ‘IP’ 인터넷 프로토콜이 있어야 했다.
2) 그런데 IP 프로토콜만으로는 메시지 전달에 한계가 있었다. (잘 도착했는지 or 순서 보장X)
3) 그래서 TCP 프로토콜이 그 한계를 어느 정도로 해결해준다.
4) UDP는 거의 IP와 똑같고 (PORT와 체크섬 정도)만 추가되는 백지 상태이다.
5) PORT는 같은 IP내에서 동작하는 애플리케이션 구분하기 위해 사용하며, IP가 특정 아파트라면, PORT는 몇 동 몇 호인지 상세 주소를 담는다.
6) 마지막으로 IP 주소는 변하기 쉽고 외우기 어려운데 DNS에 도메인명으로 등록해서 쉽게 사용할 수 있다.
728x90