본문 바로가기
웹/http

김영한 님의 HTTP 웹 기본지식 강의/1.인터넷 네트워크

by saul 2021. 9. 10.

 

목표 : 네트워크 통신의 대략적인 흐름 이해

 

 

01. 인터넷 통신

 

서로 다른 네트워크에서 두 개의 컴퓨터가 서로 데이터를 주고받기 위해서는 어떤 것들이 필요할까? 당연히 목적지 주소가 필요할 것이다.

 

그래서 그 주소가 바로 IP주소이다. IP주소는 네트워크를 식별할 때 사용하는 주소이다.

 

ip란?

  • 인터넷 상에서의 통신규약중 하나. 오직 데이터의 통신만을 담당. 
  • 지정한 IP 주소 (IP Adress)에 데이터 전달.
  • IP 패킷이라는 통신 단위로 데이터 전달.

IP 패킷이란?

  • 데이터의 전송 단위. 데이터의 집합체
  • IP 패킷 안에는 출발지 IP주소, 목적지 IP 주소... 등등 다양한 데이터들이 있다.

 

IP 패킷의 전송방법

 

1) 패킷에 출발지 IP, 목적지 IP, 전송 데이터를 넣고 인터넷 망에 보낸다.

2) IP 프로토콜을 사용, 노드끼리 주소를 확인하여 목적지까지 보낸다.

3) 목적지 서버에서 데이터를 받았다면 이미 온 노드를 기억하여 빠르게 답한다.

 

IP 프로토콜의 한계

  • IP 프로토콜은 서버가 존재하지 않거나, 서비스 불능 상태여도 일단은 전달하는 규약이다 ---> 비연결성
  • 패킷을 전부 보내더라도 서버에 순서대로 도착하지 않거나, 중간에 노드들을 거치다가 패킷이 유실될 수 있다. 이에 대해서 IP 프로토콜은 어떠한 책임도 지지 않는다 ---> 비신뢰성
  • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? ---> 프로그램 구분 불가

 

등등 위와 같은 문제점들이 있다.

이와 같은 문제점들을 해결하기 위해 나온 프로토콜이 TCP 프로토콜이다.

TCP 프로토콜을 알아보기 전에 TCP/IP 4 계층에 대해서 알아보자.

 

 

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

 

애플리케이션 계층 - HTTP, FTP

전송계층  - TCP, UDP

인터넷 계층 - ip

네트워크 인터페이스 계층

 

 

계층에 대해서 알아봤으니 어떤 방식으로 패킷이 만들어지는지 확인해 보자.

 

1) 프로그램이 메시지를 생성한다.

2) 생성된 메시지를 소켓 라이브러리가 OS로 전달한다.

3) OS에서 TCP 정보 생성, 메시지 데이터를 포함한다.

4) IP 패킷 생성, TCP 데이터 포함

 

IP패킷에는 TCP 프로토콜의 정보가 들어있다.

 

여기서 중요한 것은 데이터가 전송될 때, 출발지 IP, 목적지 IP, 그리고 TCP 정보가 같이 담겨서 전송된다는 것이다.

 

 

그렇다면 TCP 프로토콜이란 무엇일까?

 

 

 

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

 

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

  가상으로만 연결하는 것이다. 이 방법으로 상대방의 컴퓨터가 데이터 교환이 가능한 상태인지 확인한다. 

   ---> IP 프로토콜의 비연결성 보완

 

 

 

 2) 데이터 전달 보증

 클라이언트가 서버에게 데이터를 전송하면 서버에서 잘 받았는지 응답해준다. ---> IP 프로토콜의 비신뢰성 보완

 

 3) 순서 보장

 클라이언트가 서버로 데이터를 보냈는데 서버에 도착한 데이터의 순서가 다를 경우, 전부 버리고 다시 요청하여 데이터를 받는다.

---> IP 프로토콜의 비신뢰성 보완

 

이와 같이 TCP 신뢰할 수 있는 프로토콜이다. 현재는 대부분 TCP를 사용한다.

그렇다면 같은 전송계층 프로토콜이었던  UDP 프로토콜은 무엇일까?

 

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

1) IP 프로토콜과 거의 같다. + PORT 번호 + 체크섬 정도만 추가 

2) 연결 지향 (X) , 데이터 전달 보증 (X) , 순서 보장 (X)

 

---> 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다. 

 

그렇다면 하나의 IP에서 여러 애플리케이션을 사용할 경우, 구분을 어떻게 하나?

어떤 애플리케이션에 어떤 데이터가 필요한지 구분하는 방법을 말하는 것이다.

 

그 구분을 PORT 번호가 해준다.

 

그렇다면 PORT 번호란 무엇일까? 

IP 프로토콜 만으로는 어떤 프로그램의 데이터 인지 구분을 하지 못한다. 

그래서 OS는 하나의 아이피에서 실행 중인 애플리케이션(프로세스)에 번호를 매긴다. 이 번호가 PORT 번호다.

 

위 그림처럼 TCP/IP 패킷 안에는 출발지 PORT 번호, 목적지 PORT 번호가 모두 들어있다.

 

서버 애플리케이션들은 보통 고정된 포트번호를 사용한다. 그 포트를 웰 노운(Well-known) 포트라고 한다.

 

 

 

참고:

본 포스팅에 있는 모든 자료는 김영한 님의 HTTP 웹 기본지식 강의의 자료들 입니다.

01. HTTP 웹 기본 지식 - 인터넷 네트워크 (aejeong.com)