1. 인터넷 네트워크

Ogu·2022년 5월 17일
0

인터넷 통신

인터넷

컴퓨터들, 클라이언트와 서버는 인터넷을 이용해 통신한다.

인터넷 망은 선 하나만으로는 통신할 수 없다. 인터넷에 연결된 컴퓨터는 수없이 많고, 데이터를 전달하려는 목적지까지의 거리도 매우 멀 수 있다.
데이터는 인터넷에 존재하는 노드(서버)들을 통해 전달된다.

IP

▶️ 클라이언트와 서버간의 인터넷 통신을 하기 위해 먼저 IP 주소를 부여받아야한다.

IP - 인터넷 프로토콜 역할

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

IP 패킷

패킷 내에는 전송 데이터를 포함해 출발지 IP, 목적지 IP 등을 포함한다.

클라이언트 패킷 전달

클라이언트에서는 이 정보들을 담아 서버에 패킷을 전달한다.
이 패킷은 목적지 IP를 찾기 위해 여러 노드들을 거친다.

서버 패킷 전달

앞서 클라이언트가 보낸 패킷을 받은 서버는 다시 클라이언트에게 응답을 보낸다. 인터넷 망은 복잡하기 때문에 앞서 온 경로와 다른 경로로 전송될 수 있다.

IP 프로토콜의 한계

비연결성

IP 프로토콜은 패킷을 받을 대상이 없거나(서버가 꺼져있거나) 서비스 불능 상태여도 패킷을 전송한다.

비신뢰성

패킷을 보낼때 여러 문제가 발생할 수 있다.
1. 중간의 노드에 문제가 발생해 패킷이 사라질 수 있다.(패킷 소실)

  1. 패킷이 순서대로 전달되지 않을 수 있다.
    'Hello, World'를 보내기위해 'Hello,'와 'World'로 나누어 패킷을 보냈다고 생각해보자. (보통 1500byte이상은 끊어서 보낸다.) 이때 'Hello,'와 'World'는 서로 다른 경로로 전송될 수 있는데, 'World'패킷이 더 빠른 경로로 이동했다면 먼저 도착하게 되어 'World!Hello,'라는 메시지로 전달된다.

프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분하는데 문제가 생긴다. ( ex) 게임, 음악, 화상통화 등)

이러한 한계점을 해결해주기 위한 것이 TCP, UDP 전송 계층이다.

TCP, UDP

TCP(Transmission Control Protocol) : 전송 제어 프로토콜

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

TCP, UDP 는 인터넷 프로토클 스택의 4계층에서 전송 계층에 해당한다.

TCP는 IP가 속하는 인터넷 계층의 상위 계층인 전송 계층에 속하여, 네트워크 통신에서 인터넷 계층의 한계점을 보완해준다.
프로토콜 계층에 TCP, IP는 OS(운영체제)에 속하고 전송 과정은 다음과 같다.

TCP/IP 패킷 정보

앞서 IP패킷이 출발지 IP, 목적지 IP등을 포함했다면
TCP는 출발지 PORT와 목적지 PORT, 전송 제어, 순서, 검증 정보를 포함한다. 이를 TCP 세그먼트라 한다.

TCP 특징

  • 연결지향 - TCP 3 way handshake (가상 연결, 개념적으로 연결)
  • 데이터 전달 보증 (중간에 누락이 되면 알 수 있다.)
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

TCP 3 way handshake

TCP 3 way handshake는 데이터 전송에 앞서서 먼저 연결을 하는 과정이다.

데이터 전달 보증

클라이언트에서 데이터 전송 시 서버는 데이터를 잘 받았다고 알려준다.

순서 보장

클라이언트에서 패킷을 1,2,3 순서로 보냈다고 가정하자.
만약 서버에 패킷이 1,3,2순서로 잘못 도착되었다면 서버는 패킷 2부터 다시 보내라고 응답한다.
이 모든 기능은 TCP 세그먼트에 정보를 가지고 있기 때문에 가능하다.

UCP 특징

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

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.

정리

  • IP와 거의 같다 + PORT + 체크섬 정도만 추가
  • 애플리케이션에서 추가 작업 필요

PORT

PORT : 항구
클라이언트 PC가 게임, 화상통화, 웹 브라우저 요청 등 여러 애플리케이션을 사용하고 있다고 하자.
이때 전송을 주고받을 데이터가 IP 주소의 어떤 애플리케이션으로 데이터를 받아야 하는지 알 수 없다.

이 애플리케이션을 구분하기 위해 PORT를 사용한다.

TCP 세그먼트에 있는 출발지 PORT, 도착지 PORT를 이용해 구분할 수 있다.

  • 포트는 0~65535까지 할당 가능하다.
  • 0~1023 포트는 잘 알려진 포트로, 사용하지 않는 것이 좋다.
  • 주요 포트
    HTTP - 80 , HTTPS - 443 , FTP - 20, 21 , TELNET - 23

DNS

IP는 최대 12개의 숫자로 구성되어 있기 때문에 기억하기 어렵다.
또한 IP 주소는 변경될 수 있다. 이러한 경우 이전의 IP주소를 기억하고 있어도 변경 후에는 접속할 수 없다.

이를 해결하기 위해 DNS가 필요하다.

DNS란?

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

  • 전화번호부
  • 도메인 명을 IP 주소로 변환

DNS는 전화번호부와 같다. 도메인에 해당 IP 주소를 할당하고 IP주소가 변경된다면 변경된 IP 주소를 할당한다.

이렇게 하면 도메인 명이 바뀌지 않는 한, IP 주소가 바뀌어도 접속하는 데 문제가 생기지 않는다.

참고

profile
私はゲームと日本が好きなBackend Developer志望生のOguです🐤🐤

0개의 댓글