인터넷 네트워크 기초 지식

김희산·2023년 7월 7일
0

네트워크

목록 보기
1/1

클라이언트에서 서버까지 어떻게 수많은 복잡한 길을 헤쳐나갈까?

→ IP에 대해 알아보자

어떻게 ‘Hello world’를 주고 받을 수 있을까? → 각각의 IP주소가 있어야 한다.


IP

인터넷 프로토콜 역할

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

메시지를 그냥 그대로 보내는 것이 아니라 ‘IP 패킷’ 규칙에 의해서 보내진다.

이렇게 IP패킷을 만든 다음에 던지면 목적지(서버) 까지 데이터가 패킷이라는 형태로 전달이 완료된다.

서버가 클라이언트가 보낸 데이터를 받으면 OK라는 표시를통해 적절한 응답을 보낸다.

IP 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 → 대상 서버가 패킷을 받을 수 있는 상태인지 모름
  • 비신뢰성
    • 중간에 패킷이 사라지면? → 여러 서버를 거쳐가다가 특정 서버가 죽은 상태이거나 케이블이 손상이 있을수 있음
    • 패킷이 순서대로 안오면? → 대략 패킷들이 1500byte 씩 끊어져서 보내지는데 각 패킷들이 서로 다른 노드를 탈 수 도 있음 → 도착 순서가 달라질 수 도 있음
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

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

네트워크 인터페이스 계층 → 랜카드,랜드라이버 등 을 포함한다.

랜카드를 통해 인터넷으로 전달될 때 Ethernet frame 으로 포장되어서 보내진다.

Ethernet frame은 랜카드에 등록된 MAC주소(물리적인 주소) 등을 담고있다.

TCP/IP 패킷 정보

그래서 패킷이 뭔가? → 패키지 + 버킷

: 데이터 담는 상자

TCP 정보에는 전송 제어, 순서, 검증 정보 등이 포함된다. IP만으로 해결이 안됐던 문제들이 해결이 된다.


TCP 특징

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

  • 연결지향 - TCP 3 way handshake ( 가상 연결 ) → 연결을 한 다음에 데이터를 보냄
  • 데이터 전달 보증 → 만약 전송중에 패킷이 누락되거나 손상되면 알 수가 있음
  • 순서 보장
  • 신뢰 할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

TCP 3 way handshake

서로 총 3번주고 받고 연결이 됐다라는 것을 인식한 후에 데이터를 전송한다.

근데 여기서 연결이 됐다라는 것도 결국 논리적으로 (가상으로) 연결이 됐다라고 개념적으로 생각하는 것이다. 물리적으로 연결이 된 것이 아니다.

만약 클라이언트에서 SYN을 보냄 → 서버에서 응답이 없음 → 클라이언트가 알아차리고 메시지를 보내지 않는다.

요즘은 3번과정인 클라이언트가 ACK를 보낼때 데이터도 함께 보낸다고 한다.

데이터 전달 보증

클라이언트에서 데이터 전송을 하고나서 서버가 데이터를 받으면 받았다고 응답을 보내준다. 만약 아무 응답이 없다면 클라이언트 입장에서 어떤 문제가 있다고 인지할 수 있다.

순서 보장

이러한 것들이 어떻게 가능할까? → 위에서 언급한 TCP 데이터안에는 전송 제어, 순서, 검증 정보 들이 추가가 되어 있기 때문에 가능한 것이다. 그래서 TCP를 신뢰할 수 있는 프로토콜이라고 부른다.


UDP 특징

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

  • 하얀 도화지에 비유(기능이 거의 없음)
    • HTTP3이 UDP기반 통신 방식
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • 정리
    • IP와 거의 동일하지만 PORT와 체크섬 정도만 추가되어있음
    • 애플리케이션에서 추가 작업 필요

→ TCP, UDP 모두 PORT 정보가 포함되어있다. PORT가 무엇일까?

내가 사용하고 있는 PC가 1개라면 IP주소는 하나이다. 그런데 PC에서 게임도 하고, 음악도 듣고 다른 여러 애플리케이션이 동작 중이라고 하면 내 IP로 여러 패킷들이 들어오고 있는 상황이다. 어떻게 들어오는 패킷이 게임패킷인지 음악패킷인 지 구분할 것인가? 라고 할 때 필요한 것이 PORT이다. PORT는 출입문이라고 생각하면 된다. 하나의 건물에 여러 출입문이 있는 것처럼 하나의 PC에 즉 하나의 IP에 여러 PORT가 있는 것이다. 그리고 데이터들은 검증할 때 필요한 것이 체크섬이다.


PORT

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

DNS

IP는 외우기 어렵고 변경될 수가 있다. → DNS로 해결 가능

도메인 네임 시스템(Domain Name System) 사용

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

도메인을 사서 IP주소를 등록해놓는다.

클라이언트가 DNS 서버에다가 원하는 사이트의 주소를 달라고하면 DNS서버가 응답을 하고 원하는 사이트의 IP주소를 준다.


출처 : 모든 개발자를 위한 HTTP 웹 기본 지식 ( 김영한 )

profile
성공은 제로섬 게임이 아니라 주변인들과 함께 나아가는 것이다.

0개의 댓글