인터넷과 네트워크

bolee·2022년 3월 9일
0

HTTP 기초

목록 보기
1/4
post-thumbnail

컴퓨터는 어떻게 통신할까?

이런 식으로 컴퓨터끼리는 연결되어 있어 서로 데이터를 주고 받는 형식으로 통신을 진행하게 된다.
그러나 위의 상황처럼 컴퓨터가 직접적으로 연결되어 있지 않는 인터넷 상황에서의 컴퓨터끼리의 통신은 어떻게 될까?

인터넷 환경은 여러대의 컴퓨터가 노드 형태로 연결되어 있으며 두 컴퓨터간 통신은 이러한 여러 중간 노드를 거쳐가며 데이터를 주고 받는다.
그렇다면 어떻게, 어떤 규칙으로 수 많은 복잡한 형태의 상황을 거쳐 도착지까지 데이터를 안전하게 전송하고 통신할까?

IP or IP Portocol

(인터넷 프로토콜 / Internet Protocol)

IP 프로토콜이란 각각의 컴퓨터(노드)에 IP 주소를 부여하는 것이다. 이것은 마치 사람이 사는 집의 주소와 비슷하다.

서로의 주소를 가지고 편지를 주고 받는 방식과 비슷하며, 이를 이용해 데이터를 주고 받을 수 있게 된다!

IP의 역할

  • 지정한 IP 주소(IP Address)에 데이터를 전달한다.
  • 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.

IP 패킷(Packet) 정보

  • 패킷(Packet) => package + bucket

IP 역할에서 언급한 패킷(Packet)은 데이터 전송 시 데이터에 추가 되어 함께 전송된다. 패킷에는 IP 프로토콜에 필요한 출발지 IP, 목적지 IP, 등등 IP 프로토콜을 시행하는데 필요한 여러 정보들을 담고있다.

이러한 패킷을 이용해 아래와 같이 IP 프로토콜을 이용해 인터넷 통신을 실행한다.

IP 프로토콜의 한계

이러한 IP 프로토콜에 3가지 정도의 한계점이 존재하는데 그것은 아래와 같다.

  • 비연결성
  • 비신뢰성
  • 프로그램 구분

IP 프로토콜의 경우 패킷을 받을 대상이 없거나 서비스 불가능 상태일 때여도 패킷을 전송한다. 통신이 가능한 상태인지 즉, 연결이 되어 있는지 알 수 없는 비연결성의 문제가 존재한다.

또한 통신 중 패킷이 중간에 사라지거나, 패킷이 전송되는 경로는 그때 그때마다 다르기 때문에 패킷이 전송한 곳에서 의도한 순서대로 안올 수도 있다. 그러나 패킷을 받는 입장에서는 그것을 검증할 방법이 없기 때문에 비신뢰성이라는 문제가 생긴다.

마지막으로 한 IP에 통신하는 애플리케이션이 둘 이상이라면 전송 받은 패킷이 어떤 애플리케이션에서 사용되어야 하는지 구분할 수 없는 문제가 있다.

이러한 IP 프로토콜의 한계를 해결하기 위해 TCP, UDP이 나타났다.

TCP(전송 제어 프로토콜 / Transmission Control Protocol), UDP(사용자 데이터그램 프로토콜 / User Datagram Protocol)

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

인터넷 프로토콜에는 4계층이 존재한다.

인테넷 통신을 하기 위한 과정이며 애플리케이션 계층부터 네트워크 인터페이스 계층까지 내려오면서 인터넷 통신을 위한 처리를 하여 인터넷 통신을 진행한다.
이 중 IP 프로토콜과 TCP, UDP는 os에서 관리한다.

  • Ethernet frame은 여기서 언급하기 않을 것이기 때문에 간단하게 말하자면 LAN 카드에 포함된 물리적 정보들을 포함한다.

TCP/IP 패킷 정보

위에 인터넷 프로토콜 과정에서 알 수 있듯이 TCP, UDP가 먼저 실행되고, IP 프로토콜이 실행되기 때문에 최종적인 패킷은 아래 사진과 같이 된다.

TCP와 UDP 중 TCP가 표준화가 잘 되어 있어, 주로 TCP가 많이 사용되어 보통 TCP/IP 패킷으로 불린다.

TCP 세그먼트에는 IP 프로토콜의 한계점을 해결하기 위해 PORT 정보와 전송 제어, 순서, 검증 정보 등을 담고 있다.

TCP 특징

TCP: 전송 제어 프로토콜(Transmission Control Protocol)
TCP는 크게 4가지 정도 특징이 있는데 그것은 아래와 같다.

  • 연결지향 - TCP 3 way handshake(가상연결)
  • 데이터 전달 보증
  • 순서 보장
  • PORT 정보

연결지향의 TCP 3 way handshake는 연결이 되어있는지 아닌지 확인하는 방식으로 IP 프로토콜의 한계점 중 하나인 비연결성을 해결하였다. 그러나 이는 인터넷 특성상 개념적으로 연결되어 있는 것 즉, 물리적으로 연결되어 있는 것이 아니기 때문에 오해하지 않도록 해야한다.

데이터 전달 보증과 순서 보장은 IP 프로토콜의 중간에 패킷이 전송되지 않거나, 보낸 순서대로 도착하지 않을 수 있다는 비신뢰성을 해결한 것이다.

PORT 정보의 경우 하나에 IP에 둘 이상 통신이 진행될 경우 전송된 데이터가 어떠한 곳에 쓰이는 지를 구분하기 위한 것이다.

TCP의 경우 신뢰할 수 있는 프로토콜이기 때문에 현재는 대부분 TCP를 사용한다고 한다.

TCP 3 way handshake

TCP 3 way handshake는 연결 상태를 확인하는 것이다. 데이터를 본격적으로 전송하기 전에 서로 접속 요청과 요청 수락을 주고 받아 연결상태를 확인한 후 데이터를 전송한다.

일반적으로 연결 상태를 확인하기 위해 3번 주고 받기 때문에 3번 악수하는 것과 같다고 하여 3 way handshake라고 한다.

데이터 전달 보증

데이터 전달 보증은 데이터를 받은 곳에서 데이터를 준 곳에 확인 메세지를 보내 전달 확인을 보증해주는 것이다.

순서 보장

패킷이 전송한 순서대로 도착하지 않았을 경우 패킷을 받은 쪽에서 다시 그 부분부터 요청을 하는 방식으로 패킷의 순서를 보장한다.

패킷을 받는 쪽(주로 서버)에서 최적화가 가능하나 기본적으로 다시 요청하는 편이라고 한다.

PORT

IP 프로토콜에서 언급했듯 한번에 둘 이상 연결해야할 경우 패킷을 구분하기 힘들다는 한계가 있었다.

TCP, UDP에서 이를 위해 패킷에 PORT를 도입하여 해결하였다.
즉, PORT는 같은 IP 내에서 프로세스 구분을 위해 사용되면, 비유를 들자면 IP가 아파트라면 PORT는 동호수 같은 느낌이라고 생각하면 된다.

PORT는 0부터 65535까지 할당가능한다.
그러나 0부터 1023까지는 잘 알려진 포트로 사용하지 않는 것이 좋다.

  • FTP - 20, 21
  • TELNET - 23
  • HTTP - 80
  • HTTPS - 443

UDP 특징

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

UDP는 TCP의 하얀 도화지라고 보면 된다. 즉, 기능이 거의 없는 것이 특징이다.
TCP의 특징인 3 way handshake, 데이터 전달 보증, 순서 보장 모두 없어 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.
결과적으로 UDP는 IP 프로토콜과 거의 같다. IP 프로토콜에 PORT와 검증을 위한 체크섬 정도만 추가된 상태이다.
그렇기 때문에 애플리케이션에서 추가적인 작업이 필요하며, 커스텀이 가능한다. (TCP의 경우 거의 불가능)

예전에는 종종 쓰였는데, 최근 인터넷 통신 성능향상을 위해 다시 UDP로 돌아가려는 움직임도 있다고 한다.

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

IP 프로토콜에서 사용되는 IP는 기억하기 힘들고, 변경될 수 있다는 점은 사용자 입장에서 사용하기 힘들다.

DNS는 이러한 점을 보완하기 위한 시스템으로 마치 전화번호부 같이 도메인 명을 IP 주소로 변환해준다.

참고 강의 : "김영한 강사님", 인프런 모든 개발자를 위한 HTTP 웹 기본 지식

  • 문제 발생 시 삭제 조치 하도록 하겠습니다.

0개의 댓글