본문 바로가기

문과 코린이의, [WEB] 기록/문과 코린이의, [HTTP] 기록

[문과 코린이의 IT 기록장] HTTP - 인터넷 네트워크 (인터넷 통신, IP, TCP/UDP, PORT, DNS)

반응형

[문과 코린이의 IT 기록장] HTTP - 인터넷 네트워크 (인터넷 통신, IP, TCP/UDP, PORT, DNS)

[문과 코린이의 IT 기록장] HTTP - 인터넷 네트워크 (인터넷 통신, IP, TCP/UDP, PORT, DNS)

 


 

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

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

www.inflearn.com


1. 인터넷 통신 방법

[ 인터넷에서 두 대의 컴퓨터가 통신하는 방법 ]

- Web, HTTP도 이 인터넷 네트워크 망을 기반으로 동작한다. 따라서 이 네트워크 프로토콜들에 대한 학습이 필요하다.

 

클라이언트와 서버 사이의 거리가 멀 경우, 인터넷 망을 통해서 메세지를 전송하게 된다.

인터넷에서 두 대의 컴퓨터가 통신하는 방법

이렇게 굉장히 복잡한 인터넷 망을, 클라이언트에서 서버로 안전하게 전달할 수 있도록 하는 규칙이 있는데, 이를 프로토콜(IP, TCP/UDP ...)이라고 한다.

 cf) 프로토콜이란? : 어떤 시스템이 다른 시스템과 원활하게 통신할 수 있도록 해주는 규약을 의미한다.

 


2. IP (Internet Protocol)

IP는 주소를 의미한다. 즉, 각각의 컴퓨터에 부여되는 것이며, 각 클라이언트/서버는 이를 통해 원하는 IP 주소(IP Address)에, 패킷(Packet)이라는 통신 단위로 데이터를 전달할 수 있게 된다.


1) IP 패킷 구성 = 출발지 IP + 목적지 IP + 전송 데이터 + 기타 ... 

ex1. 클라이언트 패킷 전달 방식

ex2. 서버 패킷 전달 방식

* 인터넷 망은 굉장히 복잡하게 구성되어 있기 때문에, 클라이언트 -> 서버로 던지는 경로와 서버 -> 클라이언트로 던지는 경로가 다르게 흘러갈 수 있다. 


2) IP 프로토콜의 한계

(1) 비연결성 : 패킷을 받을 대상이 없거나, 대상이 서비스 불능 상태인 경우에도 그냥 패킷을 전송해 버린다.

(2) 비신뢰성 : 중간 노드에 문제가 생겨 패킷이 사라지거나, 보낸 순서대로 패킷이 도착하지 않을 가능성이 존재한다. 

(3) 프로그램 구분 불가능 : 하나의 PC(IP)에서 여러 어플을 사용하고 있을 경우, 서버는 어떤 프로그램에서 해당 어플로 메시지를 보냈는지 구분할 수 없다.

 


​3. TCP/UDP

[ 인터넷 프로토콜 스택의 4계층 ]

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층 ex. LAN카드

 


1) TCP

위의 IP문제들은 TCP를 통해 해결할 수 있다.


(1) TCP 관련 정보 = 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등..

 


(2)  TCP 특징

1. 연결지향

: 출발지-목적지가 연결되었는지를 확인한 후, 메시지를 보낸다.

# TCP 3 way handshaker (가상 연결)

1~3의 과정을 통해, 두 컴퓨터가 서로 연결되었다는 것을 인지하며, 이후 데이터를 전송하게 된다.

* 이는 통상적으로 'TCP가 연결되었다', '소켓이 연결되었다'라고 이야기하지만, 실제로 물리적인 연결은 아니다. 이 과정을 통해 논리적(개념적)인 연결만 이루어진 것이다.

* 즉, 인터넷 망 내부의 노드들이 모두 연결되었다는 것을 보장해주는 것은 아니라는 것이다.

 

2. 데이터 전달 보증

: 데이터를 전송하게 되면, 잘 전송받았는지 다시 보내주기 때문에, 중간에 패킷이 누락될 경우 확인 가능하다. 

 

3. 순서 보장 

* 서버에서 패킷들을 모았다가, 다시 요청하는 최적화 과정을 진행하기도 함.

 

 

=> 이 특성들은 모두, TCP 내에 전송제어 정보, 순서, 검증 정보 등이 포함되어있기 때문에 가지게 되는 것이다.

 


​2) UDP

UDP는 TCP와 다르게, 연결지향, 데이터 전달 보증, 순서 보장이 모두 안 된다. 즉, 기능이 거의 없으며 IP와 굉장히 유사하다.

 

그러나, UDP는 IP 요소 + PORT + 체크섬의 기능을 가지고 있다.

* PORT : 하나의 클라언트 PC가 여러 서버와 연결할 경우, IP만으로는 서버에서 어떤 프로그램으로 패킷을 보내야 할지 결정할 수 없다. 따라서, 서버 내에서 돌아가는 앱들을 구분하는 기준이 필요한데, 이를 PORT라고 한다.

 ex. IP가 아파트라면, PORT는 호수를 의미한다.

* 체크섬 : 메시지가 제대로 도착했는지 확인하는 기능

 

최근, UDP가 각광받고 있다. TCP는 사용할 경우 3way handshake과정이 오랜 시간을 소요하기 때문에 데이터 전송속도를 빠르게 하기 어렵다는 단점이 존재하는데, 만약 UDP를 통해 필요한 기능을 추가시켜 최적화해 특정 부분에서 이러한 단점을 개선하고 효과적으로 사용할 수 있기 때문이다.

 


3. PORT

하나의 클라언트 PC가 여러 서버와 연결할 경우, IP만으로는 서버에서 어떤 프로그램으로 패킷을 보내야 할지 결정할 수 없다. 따라서, 서버 내에서 돌아가는 앱들을 구분하는 기준이 필요한데, 이를 PORT라고 한다.

즉, 같은 IP 내에서 프로세스를 구분하는 것을 PORT라고 이야기한다.

PORT는 보통 0 - 65535까지 할당 가능하다.

- 0~1023번은 잘 알려진 포트들이기 때문에 사용하지 않는 것이 좋다.

 ex. FTP : 20,21번 / TELNET : 23번 / HTTP : 80번 / HTTPS(HTTP + 보안) : 443번 

- 이 외의 나머지 번호를 가지고 앱을 만들 때 사용하면 된다.

 


4. DNS

IP만으로 통신하는 것은 단점들이 존재한다.

1. IP는 길기 때문에 기억하기가 굉장히 어렵다.

2. IP주소는 변경될 수 있다. (신규 IP 주소로 바뀌게 되면 해당 주소로 접근할 수 없게 된다)

 

문제들을 해결하기 위해 DNS가 등장하게 된다.

* DNS서버의 도메인 명을 구매하여 등록하며, 그곳에 IP주소를 연결시켜놓는다.

* 클라이언트에서 해당 도메인명을 입력하면, DNS서버가 자동으로 해당 IP주소로 변환하여 응답하며, 접근하도록 돕는다.

 

 


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)
반응형