네트워크 복습

Sheryl Yun·2023년 1월 3일
2
post-thumbnail

출처

인프런 강의: 모든 웹 개발자를 위한 HTTP 기본 지식 (김영한 님)

1년 전 들은 강의를 복습하는 글입니다.
강의를 기반으로 한 내용이며 이미지는 포함되어 있지 않습니다.

인터넷 통신

웹이나 HTTP인터넷 망에 기반해서 동작한다.

인터넷에서 컴퓨터 두 대는 어떻게 통신할까?

  • 둘이 붙어 있는 경우 (케이블 하나로 연결된 경우)
    • 클라이언트가 "Hello world" 라고 보내면
    • 서버는 연결된 케이블을 통해 바로 "ok" 로 응답할 수 있음
  • 둘이 멀리 떨어져 있는 경우 (케이블로 연결되지 않은 경우)
    • 예: 한국과 미국에서 메시지를 주고 받을 때
    • 데이터를 전달하기 위한 광범위한 인터넷 노드 망이 필요

IP (Internet Protocol)

멀리 떨어져 있는 컴퓨터들이 서로 인터넷 망에서 통신하기 위한 최소한의 약속(Protocol)

역할

  • 패킷(Packet) 단위로 데이터 전달
  • 전달할 메시지를 클라이언트가 패킷으로 던지면
    • 인터넷 망이 IP 규약을 통해 출발지와 목적지를 이해해서 노드를 통해 패킷 전달
  • 서버도 같은 방식으로 응답 메시지를 클라이언트에 전송

한계

비연결성

  • 패킷을 받을 대상이 없거나(예: 서버쪽 컴퓨터가 꺼져 있음)
  • 서비스 불능 상태인데도 패킷을 전송
  • 상대가 받을 수 있는지 여부 판단 없이 무조건 던짐
  • 상대가 최종 데이터를 받았는지 여부도 보내는 입장에서 알 수 없음

비신뢰성

  • 통신 중간에 패킷이 사라지거나
  • 패킷이 여러 개일 때 순서대로 가지 않아도 무조건 보냄

프로그램 비구분

  • 같은 IP인 컴퓨터 내에서 서버와 통신하는 프로그램이 여러 개여도 구분하지 않음
  • 예: 인터넷 게임을 하면서 음악을 듣는 등 같은 IP 주소에서 프로그램 여러 개가 동작하고 있을 때, 특정 패킷을 던지면 프로그램 구분 없이 컴퓨터 단위(IP 주소)로만 목적지를 인식

⇒ 이러한 IP의 한계로 TCP와 UDP 등장 (UDP도 딱히 구분은 안 하고 Port 정도로만 구분)

TCP와 IP

TCP/IP 패킷

IP 패킷 안에 TCP 세그먼트를 포함한 형태

IP 패킷

출발지 IP와 목적지 IP 등을 포함

TCP 세그먼트

출발지 Port, 목적지 Port, 전송 제어 및 순서, 검증 정보 등을 포함

TCP와 IP의 차이점

  • TCP전송 순서를 구분
    • IP전송 순서를 구분하지 않음
  • TCPPort를 통해 한 컴퓨터 내에서도 다양한 애플리케이션들을 구분 가능
    • IPIP 주소를 통해 각 컴퓨터 단위만 구분

TCP와 UDP

TCP와 UDP는 IP 스택의 4계층 중 전송 계층에 해당한다.

IP 4계층

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

TCP (Transmission Control Protocol)

  • 전송 제어 프로토콜
    • 전송을 어떻게 제어할지에 대한 약속
  • IP비연결성, 비신뢰성 단점을 해결
  • 단점: 속도가 느리다 (연결성, 신뢰성, 순서를 보장하기 위한 중간 과정 때문에)

비연결성 해결

TCP는 연결 지향
— 연결이 되었다는 걸 보장
한 후 데이터 전송

TCP 3 way handshake

  • 가상 연결 (진짜로 연결된 것 아니고 개념적인 연결)
  • 클라이언트와 서버가 연결 과정에서 메시지를 총 3번 주고 받음 (SYN - 접속 요청, ACK - 접속 승인)
    1. SYN: 클라이언트가 서버에 접속 요청

    2. SYN + ACK: 서버도 클라이언트에 접속 요청 후, 클라이언트가 보낸 접속 요청을 수락

    3. ACK: 클라이언트도 서버의 접속 요청 수락

      ⇒ 이후 서로 간에 데이터 전송

  • 이 과정에서 서버가 중간에 꺼져 있으면 클라이언트의 접속 요청을 수락하지 못하게 됨
    • 데이터 전송 전에 이미 연결 가능 여부를 확인 가능

비신뢰성 해결

  • 데이터 전달 여부 보장
    • 전달 중에 데이터가 누락되면, 서버 쪽에서 메시지를 받지 못했음을 클라이언트가 알 수 있음
  • 순서 보장
    • 여러 개의 패킷을 보낼 경우 순서 보장
    • 클라이언트가 보낸 순서대로 패킷이 도착하지 않았을 경우, 서버가 다시 보내라고 응답

⇒ 이러한 특징들로 인해 TCP는 신뢰할 수 있는 프로토콜이라고 할 수 있다.

UDP (User Datagram Protocol)

  • 사용자 데이터그램 프로토콜
  • 연결 여부 보장 x, 데이터 전달 여부 보장 x, 순서 보장 x
    • TCP가 갖고 있는 기능이 하나도 없음
    • IP와 거의 동일
      • PORT체크섬 정도만 추가 (근데 PORT는 TCP에도 있음)
        ** 체크섬 : 이 메시지가 맞는지 정도만 검증해주는 데이터
  • 장점: (확인 여부 없이 무조건 보내서) 끊기지 않고 속도가 빠르다
    • 한 번 보내고 나면 네트워크 연결이 끊겨도 계속 재생되어야 하는 동영상 등에 사용됨
  • 단점: 데이터의 연결성과 신뢰성이 보장되지 않음

Port란?

  • 클라이언트나 서버 역할을 하는 하나의 컴퓨터(IP, 아파트 건물)에서
    여러 개의 애플리케이션(아파트 건물 내의 각 호수)들을 구분하기 위한 번호

  • 클라이언트에서 IP 패킷(의 TCP 세그먼트) 안에 출발지 Port목적지 Port를 담아서 보내면, 해당 목적지 Port의 서버가 해당 출발지 Port로 응답을 보냄

종류

  • 0부터 65535번까지 사용 가능
  • 0부터 1023번까지는 잘 알려진 포트이므로 사용하지 않는 게 좋다.
  • 대표 Port: HTTP 80번, HTTPS 443번

DNS (Domain Name System)

  • 클라이언트가 요청하면 도메인 명에 해당하는 IP 주소 반환 (일종의 전화번호부)
    • 예: 구글(google.com)의 IP 주소는 200.200.200.2

과정

  • 클라이언트가 도메인 명으로 요청
  • DNS 서버가 도메인에 해당하는 IP 주소 응답

사용 이유

  • IP 주소기억하기 어려움 (127.0.0.1)
  • IP 주소변경될 가능성이 있음 (컴퓨터 단위이기 때문에)
    • 서버의 IP 주소가 변경되면 기존에 연결된 클라이언트에서는 인지할 수 없음
    • 도메인 명은 IP 주소가 바뀌어도 변하지 않음
profile
데이터 분석가 준비 중입니다 (티스토리에 기록: https://cherylog.tistory.com/)

0개의 댓글