WORK/HTTP

[인프런/김영한/모든 개발자를 위한 HTTP웹 기본 지식]인터넷 네트워크

Justin Mendes 2023. 3. 14. 16:11
 

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

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com

* 김영한 선생님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하고 간략히 정리해보자.


인터넷에서 컴퓨터 둘은 어떻게 통신할까?

 

직접적으로 두 컴퓨터가 연결 되면 통신에 어려움이 없지만 위 사진처럼 컴퓨터 사이에 인터넷이 있고 그게 복잡한 망으로 구성되면 두 컴퓨터 사이에 통신은 쉽지 않을 수 있다. 이 문제를 위해 IP가 등장한다.

 

 

 

IP 패킷은 송장이 붙은 택배상자라고 이해하면 쉽다. 예를 들어 내가 A회사에서 상품을 시키면 보내는 분(출발지) 받는 분(본인)에 대한 송장이 붙은 내용물(전송 데이터)이 올 것이다. 

 

패킷 전달 과정은 다음과 같다.

 

송장에 출발지와 목적지만 있다면 택배가 잘도착할까? IP프로토콜은 다음과 같은 한계가 있다. 

 

1.비연결성

패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송

 

2.비신뢰성

중간에 패킷이 사라지면 ?

패킷이 순서대로 안오면 ? 

 

3.프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 ?

예를들어 한 PC에서 게임도 하고 음악도 들으면 애플리케이션 여러 개가 같은 아이피를 쓰고 있다. IP를 가지고 구분할 수 있을까?

 

 

이 문제를 위해 TCP/UDP 가 등장한다.


위 사진은 메시지를 작성하고 패킷이 생성되는 과정이다. 네트워크 인터페이스(검은 부분)은 웹 개발공부에 중요하지 않으므로 넘어간다.

패킷에 TCP세그먼트를 추가하면서 아이피 만으로는 해결이 안됐던 전송제어, 순서 등이 해결이 된다. 다음은 TCP 특징이다.

 

-SYN(synchronize) : 접속 요청

-ACK(acknowledge) : 요청 수락

 

사진의 3번의 경우 요즘에는 ACK와 함께 데이터도 전송한다고 한다.

위에 TCP 연결이 되었다고 연결이 된 게 아니라 개념적으로 연결되어 있을 뿐이다. 인터넷 망에 있는 수 많은 서버들이 연결되어 있는 건지 잘 모른다. 

 

TCP 프로토콜이 포함되어 있는 패킷은 클라이언트에서 서버로의 데이터 전달 성공 여부를 확인할 수 있다.

TCP 정보 안에는 전송 제어, 순서, 검증 정보가 있어서 순서가 보장된다. TCP프로토콜이 신뢰할 수 있는 프로토콜이라 불리는 이유이다.

 

UDP는 하얀 도화지라고 생각하면 이해하기 쉽다. 그래서 TCP 3 way handshake, 데이터 전달 보증, 순서 보장을 하지 않는다.

IP와 거의 같다. + PORT + 체크섬(검증) 정도만 추가된다.

요즘에 뜬다고 하는데 아직은 모르겠다.

 

그럼 이제 IP패킷의 문제점을 보완하여 TCP/IP 패킷에 대해 알아보았다. 어느 정도의 문제를 해결했지만 다음과 같은 경우는 어떨까?

클라이언트 PC에서 IP는 한 개가 할당되어 있다. 음악을 들으면서 게임을하다가 친구한테 메시지를 보낼 땐 패킷을 어떻게 구분할까 ?

 

이 문제를 해결하기 위해 PORT가 등장한다.

 

아래의 사진은 TCP에서 보았던 사진이다.

IP가 아파트라면 PORT는 동, 호수라고 이해하면 쉽다.  음악, 게임, 메시지는 100.100.100.1 이라는 아파트에 사는 주민이다. 각 주민의 호수는 1001호, 1002호, 1003호라고 한다면 동시에 A회사(서버)에서 물건(데이터)를 사도(통신을 하는 행위) 배송에는 문제가 없을 것이다.

 

아래는 실제로 사용하는 PORT 번호이다. 참고하면 좋을 거 같다.

 

PORT 번호

0 ~ 65535 : 할당 가능

0 ~ 1023 : 잘 알려진 포트라 사용하지 않는 것이 좋음

FTP : 20, 21 / TELNET : 23 / HTTP : 80 / HTTPS : 443 


이제 모든 문제가 다 해결됐다고 생각했다. 하지만 한가지 중요한 문제가 남아있었다.

 

IP주소는 숫자로 되어 있고 하나하나 기억하기 어렵다. IP주소는 바뀌는 일이 쉽게 발생할 수 있고 그에 따라 클라이언트는 접속을 못하게 되는 경우가 생긴다.

 

이 문제를 해결하기 위해 DNS가 있다. DNS는 Domain Name System 의 약자이다. 이름만 봐도 어떤 느낌인지 감이 온다.

DNS는 일종의 전화번호부인 셈이다 ! 도메인 명을 IP주소로 변환해주는 시스템이다.

 

 


 

파이팅