[Network] 인터넷 네트워크

dev_Hyun·2024년 5월 1일
0
post-thumbnail

개요

인터넷 통신

  • 클라이언트와 서버 사이에는 물리적 거리가 존재하고, 그 사이의 인터넷망을 거쳐야 통신할 수 있다.
  • 인터넷 망은 복잡하다. 수많은 중간 노드(서버)를 거쳐야 한다. 김영한 강사님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 (링크)는 어떤 규칙으로, 어떤 방법으로 목적지에 도착할 수 있는지에 대한 물음으로 시작된다.

프로토콜

  • 프로토콜이란, 서로간에 데이터를 주고받기 위해 정해놓은 통신 규약(약속)이다.


IP (인터넷 프로토콜)

역할

  • IP(Internet Protocol의 약자)는 지정한 IP 주소 (ex. 100.100.100.1) 에 데이터를 전달할 수 있도록 정해놓은 규칙.
  • 이때, IP Packet (패킷) 이라는 통신 단위에 묶어 데이터를 전달.

IP의 한계

1. Connectionless 비연결성

  • Packet을 받을 대상이 없거나 불능 상태여도 일단 패킷은 전송되고, 클라이언트는 서버의 상태를 알 수 없다.
  • 전송 전에 미리 연결을 설정하지 않는 방식으로, 대상 서버가 패킷을 받을 수 있는 상태인지 모른다.

2. Unreliability 비신뢰성

  • Packet이 중간에 소실되거나, 도착시 순서를 보장할 수 없다.

3. 프로그램 구분

  • 같은 IP에서 여러 애플리케이션을 동시에 사용하는 상황에서 애플리케이션을 구분할 수 없다.

4. 노드 경로

  • 요청과 응답이 반드시 동일한 경로(노드)를 지나가지는 않는다.
  • imageimage
    이미지 출처:[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식


IP Packet 패킷

특징

  • 정보 기술에서 Packet 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다.
  • 네트워크 계층에서 사용되는 프로토콜 데이터 단위이다.

IP 패킷 구조

imageimage
  • 주목할 점은 전송 데이터를 감싸고 있는 IP 패킷에 출발지 IP와 목적지 IP가 포함되어 있다는 것.

이미지 출처:

Q) 왜 큰 데이터는 패킷 단위로 쪼개서 전송하는가?

A) 도로(네트워크)에 대형 화물차(큰 데이터)가 모든 차선(대역폭)을 차지(점유)하면 정체가 일어나는 것과 같은 원리.

출처 : 서적, 모두의 네트워크



TCP 프로토콜

정의

  • Transmission Control Protocol (전송 제어 프로토콜)의 약자로, IP 프로토콜의 한계를 해결하기 위해 탄생했다.

TCP 3가지 대표 특징

  • 3가지 특징 덕분에 TCP는 신뢰할 수 있는 프로토콜로서 현재는 대부분의 애플리케이션에서 TCP 프로토콜을 사용된다.

1. 연결지향 (3 way handshake)

imageimage

이미지 출처:https://workat.tech/core-cs/tutorial/tcp-three-way-handshake-in-computer-networks-yoo7331910lh

TCP 3 way handshake 를 통해 선 연결 / 후 전송
SYN : synchronize sequence numbers의 약자, 접속 요청
ACK : acknowledgment 의 약자, 요청 수락
최근, 마지막 세번 째 순서에서 ACK와 함께 데이터도 함께 전송이 가능해졌다.

이때, 연결은 물리적 연결이 아닌 논리적(가상)연결을 의미한다. 이 논리적 연결은 직접 선으로 연결한 것이 아닌 수많은 노드들을 거쳐 연결된 것.

3-way-handshake 단계에서 TCP/IP 패킷이 전송되지만, 헤더 부분만 전송된다. 이 헤더 부분에는 SYN, ACK등을 포함해서 보낼 수 있다. 하단 TCP/IP 패킷 이미지의 헤더 부분에 포함되어 있는것을 확인할 수 있다.

양쪽 모두 Data를 전송할 준비가 되었다는 것을 보장하고, 실제로 Data전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
양쪽 모두 상대편에 대한 초기 순차일련변호를 얻을 수 있도록 한다.

4-Way handshake는 세션을 종료하기 위해 수행되는 절차.

2. 데이터 전달 보증

  • 클라이언트가 서버에게 데이터를 성공적으로 전송하면, 서버는 클라이언트에게 응답을 한다.
  • 덕분에, 메시지 누락 시 클라이언트가 확인 가능

3. 순서 보장

  • 클라이언트가 전송한 패킷 순서와 서버가 받은 패킷 순서가 다른 경우, 서버는 클라이언트에게 순서가 다른 패킷부터 재전송을 요청

Q) 왜 패킷의 순서는 보장되어야 할까?

A) 데이터를 패킷 단위로 쪼개어 보냈기 때문에, 쪼갠 순서대로 나열해야 데이터의 본래 모습으로 되돌릴 수 있다.

참고 : [서적] 모두의 네트워크

TCP Segment

image이미지 출처:https://www.khanacademy.org/computing/computers-and-internet/xcae6f4a7ff015e7d:the-internet

특징

  • TCP의 전송 단위는 Packet이 아니라 Segment이다. (Packet은 L3계층의 IP Packet 에서 사용)
  • TCP 정보가 추가되면서 IP 패킷의 한계점이 해결되었다.
  • TCP 정보에는, 출발지 Port 번호, 목적지 Port 번호를 포함하여 전송제어, 순서, 검증정보 등이 포함되어 있다.
  • Segment는 TCP 프로토콜의 데이터 단위이다.


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

imageimage
Protocol SuiteProtocol Stack

이미지 출처

  • crnetpackets.com
  • ko.wikipedia.org/wiki/인터넷프로토콜스위트

Q) 왜 layer 명칭이 이미지 마다 다를까? suite 와 stack의 차이는 무엇인가?

A) Internet Protocol suite (IP suite) is the standard network model and communication protocol stack used on the Internet and on most other computer networks.(출처:https://www.techtarget.com/whatis/definition/Internet-Protocol-suite-IP-suite)

해석 : 인터넷 프로토콜 스위트()는 인터넷과 대부분의 다른 컴퓨터 네트워크에서 사용되는 표준 네트워크 모델 및 통신 프로토콜 스택이다.

The protocol stack or network stack is an implementation of a computer networking protocol suite or protocol family.
Some of these terms are used interchangeably but strictly speaking, the suite is the definition of the communication protocols, and the stack is the software implementation of them.(출처: https://en.wikipedia.org/wiki/Protocol_stack)

해석 : 엄밀히 말하면 suite 은 통신 프로토콜 의 정의 이고 stack 은 해당 프로토콜의 소프트웨어 구현이다.

계층 및 종류

계층종류
Application Layer 애플리케이션 계층HTTP, FTP
Transport Layer 전송계층TCP, UDP
Internet Layer 인터넷 계층IP
Network Access Layer 네트워크 인터페이스 계층*Ethernet (Mac 주소와 같은 물리적인 정보들이 포함되어 있다.), LAN 드라이버 등
  • IP 프로토콜에서 중간에 패킷이 손실되고 순서가 상이한 문제들을 TCP 프로토콜을 통해 보완

흐름

A가 B에게 메시지를 전송하는 상황을 가정해보자. 다음은 A의 프로토콜 계층에서 나타나는 흐름이다

  1. 애플리케이션(프로그램)에서 'Hello' 메시지 생성
  2. 해당 메시지를 Socket 라이브러리를 통해 OS 에게 전달
  3. OS는 메시지를 TCP 정보로 감쌈 (실제 메시지 + TCP 정보)
  4. OS는 TCP로 감싸진 패킷을 IP 패킷으로 다시 감쌈 (실제 메시지 + TCP 정보 + IP 정보)
  5. 이를 네트워크 인터페이스에게 전달
  6. 네트워크 인터페이스에서 LAN 카드를 통해 실제로 전송될 때 Ethernet Frame으로 감싸서 전송한다. (실제 메시지 + TCP 정보 + IP 정보 + 이더넷 프레임)


UDP

특징

  • TCP와 같은 계층
  • 3 way handshake / 데이터 전달 보증 / 순서 보장이 없다.
    • 따라서, UDP는 하얀 도화지에 비유된다. 애플리케이션에서 추가 작업(데이터 순서를 보장하지 않는 문제를 해결하기 위한)이 필요하다.
  • 대신 단순하고, 상대적으로 속도가 빠르다 (TCP 3WAY 가 없기 때문)
  • PORT + 체크섬 추가됨

활용 상황

  • TCP는 그대로 쓰고, UDP를 통해 최적화
  • 최근에는 HTTP3 스펙에서 UDP 프로토콜을 사용하며 각광받고 있다.


PORT

역할

  • 같은 IP 내에서 여러 애플리케이션을 사용할 때, 각 애플리케이션을 구분하기 위한 방법
  • E.g.) 웹 브라우저 + 게임 + 카톡 등

image

  • 오버워치(온라인게임)가 필요로 하는 포트번호는 무엇일까 궁굼해서 구글링 한 결과 80, 442, 1119, 3724, 6113 이 필요하다는 것을 알게 되었다. 하나의 프로그램 내에서 게임 을 포함한 여러 기능(보이스채팅 등)을 위해 필요한 서로 다른 포트가 있다는 점이 흥미로웠다.

특징

  • 강의에서 비유하기를 IP는 아파트 브랜드, Port는 동호수
  • 0 ~ 65535 할당 가능 범위 (0~1023이 잘 알려진 포트번호로서 많이 사용중이니, 가급적 사용하지 않는 것을 권장)

image이미지 출처:https://martinnoh.tistory.com/entry/Well-Known-PORT

예시

  • 클라이언트와 서버가 존재한다. 서버에 요청하는 IP에는 HTTPS의 경우 443 포트가 지정되어 있다. 반면, 클라이언트가 A웹 사이트와 B웹 사이트를 동시에 사용하고 있다면, A와 B 각각을 위한 임의의 포트 2개가 할당되어 연결된다.
  • 즉, 클라이언트의 포트는 남는 포트 중 랜덤으로 할당된다.


DNS

특징

  • IP는 자주 변경될 수 있고, 기억하기 어렵다. 때문에 Domain Name System(도메인 네임 시스템)이 도입하여 해결.
  • 도메인 명을 IP 주소로 변환
  • 비유하자면 전화번호부 이다. (전화번호 단축키에 비유하는 것이 더 와닿았다.)

흐름

image 이미지출처:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kyhslam&logNo=221527956339

  1. 클라이언트가 DNS 서버에 도메인 명에 대한 IP를 요청
  2. DNS 서버는 해당 도메인 명에 대한 IP 주소를 클라이언트에 전달
  3. 클라이언트는 해당 IP주소로 서버에 접근
  4. 해당 서버는 클라이언트에게 HTTP 응답
profile
공룡, 다람쥐 그리고 돌고래!

0개의 댓글