본문 바로가기

Study/Computer Science

[HTTP] 인터넷 통신

 

※ 포스팅 내용의 모든 출처는 아래 링크와 같습니다. 작성 내용 오류에 대한 피드백을 환영합니다.

복습을 목적으로 작성한 포스팅이며, 비상업적 목적임을 알립니다.

 

출처: www.inflearn.com/course/http-웹-네트워크/dashboard

 

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

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

인터넷 통신

  • 클라이언트와 서버는 인터넷 망을 통해 서로 메시지를 주고 받음
  • 노드들은 IP 주소에 부합하는 위치를 찾아 메시지를 전달함

IP (인터넷 프로토콜)

  • 모든 컴퓨터는 IP 주소를 갖고 있음 (아마 요즘은 통신이 가능한 모든 기기는 갖고 있다고 표현하는게 맞을 것이라 생각됨)

  • IP는 인터넷 프로토콜 역할

  • 지정한 IP 주소(IP Address)에 데이터를 전달함

  • 패킷(Packet)이라는 통신 단위로 데이터가 전달됨
프로토콜(Protocol)
컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약

패킷(Packet)
컴퓨터가 전달하는 데이터의 형식화된 블록

IP 패킷 정보

  • 출발지 IP, 목적지 IP, 전송 데이터 등

IP 프로토콜의 한계

  • 비연결성

    - 패킷을 받을 대상이 업석나 서비스가 불능 상태여도 패킷 전송

    - 이 경우 대상에 메시지가 전달되지 않는 문제가 발생할 수 있음

  • 비신뢰성

    - 중간에 패킷이 사라지거나, 순서대로 오지 않는 문제

    - 메시지가 용량을 초과하는 경우(일반적으로 1,500 bytes) 메시지를 끊어서 전송하는데, 이 과정에서 순서의 문제가 발생할 수 있음

  • 프로그램 구분

    - 한 IP 내에 실행되는 애프리케이션이 둘 이상일 경우 IP 주소 만으로 어떤 어플리케이션으로 전달하는지 판단 불가

위 세 가지와 같은 한계가 존재하며, 이를 TCP로 해결할 수 있음

TCP/UDP

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

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

 

이는 메시지가 전송되는 순서로 기억하면 좋을 듯함.

클라이언트카 애플리케이션을 통해 메시지 전송을 요청하고, 이를 전송하며 인터넷을 통해 요청한 IP를 네트워크에서 탐색함

프로토콜 계층

  • (애플리케이션) 애플리케이션에서 [Hello, world!] 메시지 생성

  • (애플리케이션) SOCKET 라이브러리를 통해 전달

  • (OS영역) TCP 정보를 생성하고, 메시지 데이터를 포함

  • (OS영역) IP 패킷을 생성하는데, TCP 데이터 포함

  • (네트워크 인터페이스 영역) 네트워크 인터페이스에서 LAN 카드와 인터넷을 통해 서버로 전송
    이때, IP 패킷은 Ethernet frame에 감싸짐

TCP/IP 패킷 정보

  • IP만으로 해결하지 못하였던 문제를 해결할 수 있음

  • 전송 데이터

    +

    TCP 세그먼트 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등

    +

    IP 패킷 : 출발지 IP, 목적지 IP 등

TCP 특징

전송 제어 프로토콜 (Transamission Control Protocol)

아래와 같은 특징들은 TCP/IP 패킷에 추가된 정보들이 존재하기에 가능함

 

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

    => 연결을 한 뒤 메시지를 전송해 비연결성 문제 해결

  • 데이터 전달 보증

    => 누락된 데이터를 인식해 비신뢰성 문제 해결

  • 순서 보장

    => 순서에 따른 비신뢰성 문제 해결

위와 같은 이유로 TCP는 신뢰할 수 있는 프로토콜이며, 현재 대부분 TCP가 사용되고 있음

 

(1) TCP 3 way handshake

출처: www.inflearn.com/course/http-웹-네트워크/dashboard 세선 1 TCP/UDP 강의

 

  • 클라이언트와 서버 양 측이 연결을 요청하고 수락해 클라이언트와 서버 간 연결을 지향함

  • 클라이언트에서 서버에 접속을 요청하면, 서버는 이에 요청 수락과 접속 요청을 동시에 함.
    이에 클라이언트가 요청을 수락함으로 데이터 전송 가능 상태가 되는 것임.

  • 한 마디로 정리하자면 양 측간 연결이 되어야만 데이터 전송이 가능하도록 함

  • 이는 물리적인 선으로 연결되는 것이 아닌 논리적인 연결로 되어있음

(2) 데이터 전달 보증

  • 클라이언트가 데이터를 서버에 전송하면, 서버는 해당 데이터를 잘 전송받았음을 클라이언트에 알림

(3) 순서 보장

  • 클라이언트에서 받은 패킷에 순서가 문제가 있을 때, 서버는 클라이언트에 재 전송을 요청함

UDP 특징

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

 

  • 기능이 거의 없음

    - 연결지향 TCP 3 way handshake X

    - 데이터 전달 보증 X

    - 순서 보장 X

  • TCP는 요청과 응답을 받는 과정을 반복하다보면 속도가 느리거나, 메모리를 차지하는 문제가 발생함
    HTTP 3.0은 이를 UDP로 보완함

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

한 번 더 정리하자면

 

  • IP와 거의 동일함. PORT와 체크섬 두 가지만 추가됨

  • 이를 사용하기 위해 애플리케이션에서 추가 작업을 요함

PORT

같은 IP 내에서 프로세스 구분

 

 - 한 IP 주소에서 여러 애플리케이션이 실행되고 있을 때, 한 번에 둘 이상 연결하려면 IP만으로 구분하는 것에 한계가 존재해 PORT가 필요

 

 - 0 ~ 1023은 잘 알려진 포트(Well-known port)로 사용하지 않는 것이 좋음

 

  • IP 

    - 목적지 서버를 찾기 위함

    - 비유: 아파트

  • PORT

    - IP 내 애플리케이션 구분

    - 비유: 동과 호수

DNS(Domain Name System)

  • IP의 기억하기 어렵고, 변경될 수 있다는 문제를 해결함

  • 도메인 명을 IP 주소로 변환한 것