[모든 개발자를 위한 HTTP 웹 기본 지식] - 인터넷 네트워크

김나연·2022년 6월 12일
18

HTTP

목록 보기
1/3
post-thumbnail

인터넷 통신

서버와 클라이언트는 인터넷 상에서 어떻게 통신할까?

클라이언트/서버는 두 개의 컴퓨터 프로그램 사이에 이루어지는 역할 관계를 나타내는 것이다. 클라이언트는 다른 프로그램에게 서비스를 요청하는 프로그램이며, 서버는 그 요청에 대해 응답을 해주는 프로그램이다.

복잡한 인터넷 망


클라이언트가 'Hello, world!'라는 메세지를 인터넷을 통해 보내고자 할 때 인터넷 망은 우리가 생각한 것보다 훨씬 더 복잡한 망으로 이뤄져있을 수 있다.

복잡한 인터넷 망에서 데이터는 어떻게 안전하게 넘어갈 수 있을까?

IP

인터넷 프로토콜의 역할

송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.

IP 패킷을 이용한 통신

  • 클라이언트
  1. 출발지의 IP주소, 목적지의 IP주소 그리고 전달하려는 메세지가 담긴 IP패킷을 인터넷 망에 던진다.
  2. 인터넷 망의 노드들이 서로 패킷을 전달하며 목적지 IP를 받을 수 있는 서버가 어디있는지 찾는다.
  3. 2의 과정을 거쳐 마침내 목적지에 패킷이 도달하게 된다.

  • 서버
  1. 메세지를 잘 전달받은 서버가 클라이언트에서 답장을 하기 위해 IP 패킷에 출발지의 IP주소, 목적지의 IP주소 그리고 전달하려는 메세지를 담아 인터넷 망에 던진다.
  2. 인터넷 망의 노드들이 서로 패킷을 전달하며 목적지 IP를 받을 수 있는 노드를 탐색한다.
  3. 노드간의 탐색을 통해 마침내 목적지인 클라이언트에서 답장 메세지를 받아볼 수 있게 된다.

IP 패킷을 통한 통신의 한계

비연결성 : 패킷을 받는 대상이 없거나 서비스 불능 상태여도 패킷 전송
ㄴ 목적지의 컴퓨터가 패킷을 받을 수 있는 상태인지 확인을 하지 않는다.

비신뢰성 : 중간에 패킷이 사라지거나 순서대로 오는 것에 대해 보장을 해주지 않음

프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션을 구분하지 못함

TCP

IP 프로토콜의 한계점을 보완하기 위해 사용되며, 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜이다. TCP는 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해준다.

프로토콜 계층에서 데이터를 전달하는 과정

① 응용프로그램에 의해서 전달하고자 하는 메시지를 생성하고 socket 라이브러리를 통해 os계층에 전달한다.
② 메시지에 생성된 TCP 정보를 씌우고 IP에 전달하여 TCP 데이터를 포함한 IP 패킷을 생성한다.
③ LAN카드에 의해 이더넷 프레임, 즉 물리적 주소가 포함되어 전송된다.

TCP의 특징

TCP는 연결지향적이다.

  • TCP 3way handshake
    TCP 3way handshake를 통해 클라이언트와 서버가 연결되면 서로를 신뢰할 수 있게 되며 데이터를 전송할 수 있게 된다. 이때의 연결은 실제로 이뤄진 것이 아닌 논리적으로만 연결된 것이다.

  • 단점
    3way handshake을 하면 전송속도가 느려지며 패킷을 추가하면 데이터 양도 크고 전송속도도 빠르게 하기 어렵다.

SYN : 접속 요청
ACK : 요청 수락

TCP는 데이터 전달을 보증한다.

TCP는 데이터 전송 순서를 보장한다.

서버가 순서에 맞지 않는 패킷을 전달받은 경우, 클라이언트에게 패킷 재전송을 요청한다.

UDP

IP를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다.

UDP의 특징

IP와 거의 같으며 PORT + checksum 정도만 추가된 프로토콜이다.

  • 장점
    단순하고 빠르다.
  • 단점
    연결지향적이지 않다.
    데이터 전달을 보증하지 않는다.
    순서를 보장하지 않는다.

PORT

네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다.

한 클라이언트가 여러 서버와 연결하려면?

클라이언트가 한번에 여러 서버와 통신을 해야할 때, 서버에서 보내는 패킷이 게임에 필요한 패킷 응답인지, 화상통화에 필요한 패킷 응답인지 구분할 수 있게 해주는 것이 PORT이다.

TCP/IP 패킷

TCP에는 이러한 port정보를 포함하고 있으며 TCP와 IP를 합쳐서 TCP/IP패킷이라 한다.

DNS

변경되는 IP를 어떻게 기억할까?

  • 도메인 네임 시스템(DNS)를 이용한다.
    DNS는 전화번호부와 같은 서버를 제공해주어 IP주소를 저장할 수 있게 해준다.

① 클라이언트가 도메인 명으로 DNS 서버에 요청을 한다.
② DNS 서버는 해당 도메인 명으로 저장된 IP를 알려준다.
③ 클라이언트는 응답받은 IP 주소로 서버에 요청한다.

참조

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

profile
결국 무엇이든 해내는 사람 '김나연'입니다. 😎

0개의 댓글