아무나개발하자

인터넷 네트워크 본문

HTTP

인터넷 네트워크

개발천재나천재 2022. 7. 13. 13:20

목차 : 인터넷 통신, IP, TCP, UDP, PORT, DNS에 대해 알아 보겠다.

인터넷 통신은 IP(Internet Protocol)를 이용해 통신한다. 아래 그림은 IP(100.100.100.1)을 가진 컴퓨터와 IP(200.200.200.2)를 가진 컴퓨터가 서로 통신을 하려고 할때의 모습을 보여주고 있다.

IP의 역할은 지정한 IP주소로 데이터를 전달한다, 또한 데이터를 전달할때 패킷이라는 통신 단위로 데이터를 전달한다.

 

패킷전달

클라이언트에서 서버로 패킷을 전달할 때의 그림인데, 패킷에는 송신지 IP주소와 수신지 IP주소, 데이터가 들어가 있는것을 볼 수 있다. 또한 여러 노드(컴퓨터)를 통해 서버로 패킷을 전달하는것을 볼 수 있다.

 

서버에서 클라이언트로 패킷을 전달할 때의 그림이다, 똑같이 송신지IP 주소와 수신지IP주소, 데이터를 노드를 통해 클라이언트로 전달하는것을 볼 수 있다. 그러면 서버입장에서 목적지 IP주소를 어떻게 알 수 있을지 의문일 것이다. 그건 클라이언트의 요청 패킷에 송신지 IP주소를 통해 알수 있다.

 

 

IP 프로토콜의 한계

1. 비연결성 : 패킷을 받을 대상이 없거나 서비스가 불가능한 상태여도 패킷을 전송한다는 한계가 있다.

2. 비신뢰성 : 패킷이 중간에 사라지거나, 패킷의 크기가 큰 경우 잘라서 보내는데 잘라서 보낸 패킷이 순서대로 도착하지 않을 경우 등에 대한 한계가 있다.

3. 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 두개 이상이라면 구분하지 못하는 한계가 있다. 예를 들어 컴퓨터로 멜론 음악도 듣고 웹서핑도 하고 게임도 하면 각각의 패킷을 IP주소로는 구분하지 못한다.

 

 

TCP의 등장

IP의 한계를 보안하기 위해 등장한 TCP에 대해 소개하겠다.

TCP를 이해하기 위해서 인터넷 프로토콜 계층과 각 프로토콜 계층에서 일어나는 일에대해 알아보자

 

인터넷 프로토콜 4계층과 4계층에서의 각각의 역할에 대해 보여주고 있다. 한개를 예시를 들어 설명하겠다. 채팅 프로그램에서 HELLO라는 메시지를 생성하고 서버로 전달하기 위해 전송계층으로 보낸다. 전송계층으로 보내기 위해서는 SOCKET라이브러리를 통해 전달하고, 전송계층에서는 TCP에 대한 정보를 생성하고 상위계층에서 받은 패킷을 캡슐화한다. 그리고 전송계층에서 캡슐화된 패킷은 인터넷 계층으로 오게되고, 인터넷 계층에서는 IP에 대한 정보를 생성하고 또 다시 캡슐화를 한다. 인터넷 계층에서 캡슐화된 패킷은 네트워크 인터페이스 계층으로 전달이 되고 데이터 링크계층, 물리계층에서의 정보를 추가하여 서버로 전달이 된다.

 

TCP와 IP에 대한 정보를 추가한 데이터의 모습을 보여준다.

 

 

TCP(전송 제어 프로토콜(Transmission Control Protocol)) 특징

 

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

- 3 Way Handshake를 통해 가상의 연결을 만든다.

 

2. 데이터 전달 보증

- 클라이언트는 데이터를 서버로 전송 후 잘 받았다라는 신호를 기다린다, 신호를 못받았을 경우는 다시 데이터를 보내, 데이터를 잘 받았다는 신호를 기다린다. 이러한 과정을 통해 데이터 전달을 보증한다.

 

3. 순서 보장

- 패킷의 순서가 잘못 도착했을 경우, 서버는 잘 못받은 패킷부터 다시 보내달라고 클라이언트에게 요청한다. 이런 과정을 통해 순서를 보장한다.

 

 

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

연결지향 - TCP 3 way handshake X

데이터 전달 보증 X

순서 보장 X

데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

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

 

 

PORT

앞서서 설명한 IP의 한계 중 한개의 컴퓨터에서 여러가지 애플리케이션을 실행하여, 각각의 데이터를 받아야 하는 상황에서의 문제를 포트를 통해 해결할 수 있다. 간단하게 설명하자면 IP는 아파트 같은 느낌이고, PORT는 아파트 안에 집 같은 느낌이라고 생각하면 쉽다.

 

 

DNS(도메인 네임 시스템(Domain Name System))

DNS에 대해 간략히 설명하자면 도메인 명을 IP주소로 변환하는 시스템을 말한다. 사람들에게는 IP는 복잡하고 외우기 힘들다, 그래서 도메인 명을 정해 각각의 도메인에 따라 IP를 변환해주는 시스템이 도입되었다.

 

사람이 URL창에 google.com을 입력하게 되면 DNS는 google.com에 대한 IP를 찾고, 찾은 IP에 해당하는 서버로 접속한다. 사람입장에서 IP를 입력하기 쉽지않기 때문에 DNS를 도입했는데, 없었으면 진짜 큰일날뻔했다....

 

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

'HTTP' 카테고리의 다른 글

HTTP의 모든것  (0) 2022.12.20
웹 브라우저 요청 흐름정리  (1) 2022.12.13
HTTP의 핵심 정리  (0) 2022.12.12