nodeJS

[Node.js] 통신(네트워크)

sang969 2023. 8. 30. 12:11

 

 

"네트워크 공부 할때는 우선 실시간 ,연동, 연결 이라는 말을 생략하고 설명 할 줄 알아야한다."

로컬 컴퓨터 두 개 있다고 한다면

소켓이란

인터넷 소켓은 네트워크로 연결되어 있는 컴퓨터의 통신의 접점에 위치한 통신 객체다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓은 RFC 147에 기술사항이 정의 되어 있다.

 

인터넷 소켓은 다음과 같은 요소들로 수성되어 있다.

인터넷 프로토콜(TCP, UDP, raw IP)

  • 로컬 IP주소
  • 로컬 포트
  • 원격 IP주소
  • 원격 포트

맥 어드레스(Mac Address) 와 IP 주소

맥(mac)은 미디어 엑세스 컨트롤(Media Access Control) 이다. 통신할 하드웨어 장비를 식별 할 수 있는 고유 주소다.

내 PC나 노트북, 스마트폰은 어떻게 서로를 알고 통신을 할 수 있는 걸까? 혹은 홍길동이라는 이름만으로 나란 사람을 찾을 수 있을까? 찾더라도 힘들 것이다. 왜냐하면 홍길동이란 이름은 나만 쓰는게 아니기 때문이다.

 

그렇다면 주민등록번호는 어떨까? 홍길동이라는 이름과 주민등록번호를 알고 있다면 나를 찾을 수 있을까? 찾을 수 있다,

내 주민등록번호는 대한민국에서 나만 사용하고 있기 때문이다. 맥어드레스 (Mac Address)도 비슷한 개념이다. 

단 하나의 고유한 주소를 부여해서 통신을 할 수 있도록 만든 일종의 하드웨어 주소다.

 

그럼 아이피 주소(IP Address)는 뭔가? IP 주소도 통신을 하기 위해 사용되는 주소가 맞다. 우리가 일상생활에서 인터넷을 하기 위해 가장 많이 사용되는 주소가 IP주소이고, 일반인이 가장 많이 알고 있는 주소도 IP 주소가 맞다. 그럼 IP 주고만 가지고 통신을 할 수 있느냐?고 물어본다면 아니다. IP 주소(IP Address)와 맥어드레스(Mac Address) 둘다 필요합니다.

 

IP주소를 가지고만 통신을 시도하는 것처럼 보이지만 실제로 마지막에 맥 어드레스가 필요하다. 이는 TCP/IP 와 OSI 7 Layer 라는 통신표준에서 설계되어 있는대로 통신이 진행되기 때문인데 아이피 주소는 레이어3 네트워크에서 사용되고 맥 주소는 레이어 2 데이터 링크에서 사용되는 주소다. 통신 표준에 맞게 단계별로 진행될때, 아이피주소에서 맥 주소로 변환되는 과정을 거친다 이를 APR(Address Resolution Protocol) 이라고 한다.

 

통신을 하기 위한 모든 랜카드에는 고유한 맥 주소가 있다. 이는 세상에 딱 하나만 존재하는 주소다. 마치 내 주민등록번호처럼 말이다. 그렇기 때문에 맥 주소를 알면 통신하고싶은 장비를 찾을 수 있다. 하지만 처음 통신이 맥 주소로 시도되는 것이 아니다. 처음에는 IP  Address로 시도된다. 예를 들어 내 컴퓨터 IP가 192.168.0.100 이라고 한다면 나와 통신하는 상태방은 192.168.0.0 네트워크 대역까지 찾아온다. 그 뒤 192.168.0.100을 찾고 내 컴퓨터 맥 주소로 목적지를 변환한 뒤 최종적으로 나와 통신할 수 있게 된다.

 

사실 깊게 설명하면 조금 복잡하다. 인터넷 상에 통신은 중간에 수 많은 IP주소와 맥어드레스가 변환되는 과정을 거친다. 목적지 IP를 찾고 해당 IP에 연결된 목적지 맥 어드레스를 찾고 다시 IP를 찾고 맥어드레스를 찾고를 반복하는 과정이다.

 

맥 어드레스(Mac address) 확인하는 방법.

통신하는 모든 장비에는 고유의 맥 어드레스가 있다. 확인하는 방법이 조금씩 다르지만 기본적으로 같다.

윈도우에서는 물리적 주소, 스마트 폰에서는 하드웨어 주소를 찾아가면 된다. WIFI에도 무선 통신을 위한 맥 어드레스가 달려있다. 보통 물리적, 하드웨어, MAC 이라는 키워드로 찾아가면 된다.

 

Window에서는 cmd창을 열어 ipconfig/all 을 입력하면 볼 수 있다. 작업 표시줄 오른쪽 컴퓨터 모양의 네트워크 아이콘을 눌러 들어가서 확인할 수도 있다. 하드웨어 정보를 찾아 들어가면 맥주소를 확인 할 수 있다. cmd에 찾는 방법이 빠르다고 한다.

HOST

네트워크가 되는 컴퓨터 (디바이스)

테블릿, 스마트폰 

HOST

  • End-Point : 네트워크를 이용한다. Endpoint도 역할별로 나뉜다. 예를들면 프론트엔드 입장에서 End-point는 백엔드라 할 수 있다 (☆ 그렇다고 End-point = 백엔드 라는 뜻이 아니다). 즉 어느 프로그램에 도착하는게 중요한게 아니라 어느 컴퓨터에 도달하는지가 End-point다.(Peer, Server, Client) 
  • Switch : 네트워크는 고속도로에 비유해서 생각하면 편하다. 교차로에서 경로를 선택하는 근거가 이정표인 것처럼, 네트워크에서 Swich가 교차로이고 Routing Table이 이정표다. 스위치는 근거에 따라 이름이 바뀐다, IP 주소를 기반으로 판단하면 L3 스위치, MAC 주소로 판단하면 L2 스위치다. 즉 네트워크 흐름을 관리한다. 최적화된 경로를 결정하거나 때로는 흐름을 차단한다.
    스위칭 기능을 하는 장비는 스위치, 라우터, 방화벽, IPS등이 있다.

 

라우팅 테이블(Routing table)

 

라우팅 테이블(영어: routing table)은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다.  각 라우터의 라우팅 테이블은 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해서 거쳐야 할 다음 라우터의 정보를 가지고 있다.

이처럼 라우팅 테이블은 패킷을 전송할때 패킷이 목적지 쪽으로 보낼 수 있도록 라우터에게 목적지에 대한 정보를 알려준다 라고 알고계시면 될거같습니다.

 

 

 Layer 4: 전송계층에서 사용되는 프로토콜

 

TCP(Transmission Control Protocol)

TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 일반적으로 TCPIP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면 TCP는 패킷 추적 및 관리를 하게 됩니다. 연결 지향형인 TCP 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장합니다.

 

  • 흐름 제어: 보내는 측과 받는 측의 데이터 처리속도 차이를 조절해주는 것
  • 혼잡 제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것

특징

  • 연결형 서비스로 가상 회선 방식을 제공
  • 데이터의 전송 순서 보장
  • 데이터의 경계를 구분하지 않음
  • 신뢰성 있는 데이터 전송
  • UDP보다 전송속도가 느림
  • 연결을 설정(3-way handshaking)과 해제(4-way handshaking)

 

 UDP(User Datagram Protocol)

UDP비연결형 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다. TCP와는 다르게 연결 설정이 없으며, 혼잡 제어를 하지 않기 때문에 TCP보다 전송 속도가 빠릅니다. 그러나 데이터 전송에 대한 보장을 하지 않기 때문에 패킷 손실이 발생할 수 있습니다.

 

 특징

  • 비연결형 서비스로 데이터그램 방식을 제공
  • 비신뢰성
  • 데이터의 경계를 구분
  • 패킷 오버해드가 적어 네트워크 부하 감소
  • 혼잡 제어를 하지 않기 때문에 TCP보다 빠름
  • TCP의 handshaking 같은 연결 설정이 없음
TCP(Transfer Control Protocol) UDP(User Datagram Protocol)
연결형 프로토콜 비연결형 프로토콜
데이터의 경계를 구분하지 않음 데이터의 경계를 구분함
신뢰성있는 데이터 전송 (데이터 재전송 존재O) 비신뢰성 데이터 전송 (데이터 재전송 존재X)
일 대 일(Unicast) 통신 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신