[Network] Internet Network

Jeerryy·2023년 1월 28일
0

Network

목록 보기
1/4
post-thumbnail

이 자료는 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 학습하고 정리한 자료입니다.

개발을 하다보면 특히 서버 개발을 하다보면 TCP/IP, UDP, DNS, handshake, HTTP, URL 등 네트워크 용어들을 많이 접하게 된다.
근데 누구..?
근데 정확히 이 친구들이 어떤 역할을 하는지 들어왔던 것에 비해 정확히 알지 못한다. 서버를 개발하는 사람이 네트워크를 몰라서 되겠는가.. 그래서 미뤄두고 묵혀왔던 네트워크 공부를 하며 시리즈로 정리해보려 한다.

백엔드 개발자라면 REST API에 대해 잘 알 것이다.
REST API는 HTTP 통신을 하며 HTTP는 TCP/IP을 이용한다. (REST API에 관해서는 다음에 알아보자.)
따라서 HTTP에 대해 이해하기 위해선 IP부터 차근차근 알아야 한다.

IP(Internet Protocol)

IP는 인터넷에서 메시지 보내기 위한 최소한의 통신 규약이다.
그리고 IP Address에 Packet이라는 통신 단위로 데이터 전달하는 역할을 한다.
packet switching

Packet

패킷은 컴퓨터 네트워크에서 전달되는 데이터의 형식을 의미한다.

정보

  • 출발지 IP
  • 목적지 IP
  • Message 로 이루어져있다.

자세한 패킷 정보는 헤더편에서 다룹니다.

IP의 한계

비연결성

  • 패킷이 받을 대상이 없거나 서비스 불능 상태에도 패킷을 전송한다.

비신뢰성

  • 패킷 전달 과정 중간에 패킷이 소실될 경우 확인 불가능
  • 패킷의 순서 바뀌어 도착했을 경우 확인 불가능

애플리케이션 구분

  • 같은 IP를 사용하는 장치에서 통신하는 애플리케이션이 여러개라면 구분 불가능

Port

포트(Port)는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.

  • 같은 IP 내에서 프로세스 구분 (예시)
    • 게임 서버 8090
    • 웹브라우저: 10010
  • IP는 아파트, PORT는 동, 호수라고 생각하면 편하다.
  • 0 ~ 65535 할당 가능
  • 0~ 1023: 잘 알려진 포트, 사용하지 않는 거싱 좋음
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443

TCP(Transmission Control Protocol)

IP의 한계를 극복하기 위해 나온 것이 바로 TCP이다.
TCP는 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 핵심 네트워크 프로토콜이다.

정보

  • 출발지 PORT
  • 목적지 PORT
  • 전송 제어
  • 순서
  • 검증 정보
  • ...

자세한 패킷 정보는 헤더편에서 다룹니다.

작동 방식

TCP/IP의 작동 방식을 아래 TCP/IP 4계층을 통해 알아보자.
TCP/IP 4계층

1. 애플리케이션 계층

  • 애플리케이션에서 메시지 생성
  • SCOKET 라이브러리를 통해 전달

2. OS 계층

  • TCP Segment 생성, 애플리케이션 계층에서 생성된 메시지 포함
  • IP Packet 생성, TCP 데이터 포함

3. 네트워크 인터페이스

  • Ethernet frame에 감싸서 전송

위 과정을 모두 거칠 경우 최종 결과물이 아래 형태처럼 된다.
결과물

특징

연결지향(TCP 3 way handshake)
tcp-3-way-handshake

  • 연결 과정
    1. 클라이언트 -> 서버 SYN(접속 요청)
    2. 서버 -> 클라이언트 SYN+ACK(요청 수락 및 접속 요청)
    3. 클라이언트 -> 서버 ACK (요청 수락) - 현재는 ACK와 함께 데이터 전송 가능
  • 참고 - 물리적으로 연결되는 것이 아닌 논리적인 연결

데이터 전달 보증

  • TCP 3 way handshake를 통해 응답 여부로 확인

순서 보장

  • TCP 순서 정보를 이용하여 순서가 잘못되어 온 경우 (Packet1, Packet3, Packet2)
  • 잘못된 Packet(Packet2)부터 다시 요청함.

정리

  • 신뢰할 수 있는 프로토콜
  • 현재 대부분 TCP 사용(HTTP/2 기준)

UDP(User Datagram Protocol)

UDP는 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 프로토콜의 일종이다.

특징

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결 지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 단순하고 빠름
  • 정리
    • IP와 거의 같다. + PORT + 체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요
    • 최근 HTTP/3 에서는 UDP 사용중

DNS(Domain Name System)

172.217.25.174
위 IP를 보면 바로 어느 웹사이트인지 판단이 가능한가?
해당 IP는 바로 google.com IP Address이다. 시간이 지나면 또 어떻게 바뀌었을지 모른다.
이러하듯 DNS는 인터넷 전화번호부라고도 하며 사람이 기억하기 쉬운 도메인명과 IP Adress을 이어주는 시스템이다.
기억하기 어렵고 변경될 수 있다는 문제점을 가진 IP Address를 해결하기 위해 생겼다.

작동방식

  1. DNS 서버에 google.com → 172.217.25.174 로 등록
  2. 클라이언트가 DNS 서버에 google.com 요청 시 172.217.25.174 응답

이미지 출처

profile
다양한 경험을 해보고자 하는 Backend-Engineer.

0개의 댓글