개발소설

네트워크 기초 본문

CS/네트워크

네트워크 기초

ChaeHing 2023. 3. 27. 01:07

LAN (Local Area Network) - 좁은 범위에서 연결된 네트워크를 의미한다. (집, 학교내, 회사내 등) 
WAN (Wide Area Network) - 수많은 LAN이 모여 넓은 네트워크를 구성한다. (전 세계)

 

인터네트워킹(Internetworking)

  • 여러 네트워크를 연결하는 것을 인터네트워킹이라고 한다.
  • 네트워크의 일부가 고장이 나도 영향이 광범위하게 퍼지지 않고, 불필요한 통신이 네트워크로 확신하지 않는다.
  • 개별 네트워크를 각각의 방침에 따라 관리 한다.
  • 전 세계적으로 인터네트워킹 하는 것이 인터넷(The Internet) 이다.

 

프로토콜(protocol)

  • 인터넷으로 연결된 컴퓨터간, 전가기기간 서로 소통하기 위한 통신규약 - 원활한 통신을 위한 약속이라고 볼 수 있다.
  • 전 세계가 인터넷으로 연결되어 자유롭게 사용가능한것은 프로토콜이 있기 때문이다. (TCP/IP)

TCP/IP

  • 인터넷이 처음 시작하던 시기에 정의되어 현재까지 표준으로 사용되고 있는 프로토콜 이다.
  • 대다수의 프로그램은 TCP/IP로 통신한다고 보면 된다.

TCP/IP의 4계층

층수 계층명 주요 프로토콜 역할
4층 응용 계층 HTTP, DNS, FTP 애플리케이션에 맞추어 통신
3층 전송계층 TCP, UDP, ... IP와 애플리케이션을 중개해 데이터를 전달 한다.
2층 인터넷 계층 IP, ICMP, ARP, RARP 네트워크 주소를 기반으로 데이터 전송
1층 네트워크 접근 계층 Ethernet, wifi, .... 컴퓨터를 물리적으로 네트워크에 연결
  • 데이터가 송신자에 4층에서 시작해 수신자에 4층으로 도착한다. 4->3->2->1 -> 1->2->3->4

 

IP (Internet Protocol)

  • 컴퓨터 또는 전자기기가 통신을 하기 위한 네트워크상 주소라고 볼 수 있다.
  • 숫자 4덩어리를 .구분하고 각 숫자는 0~255 사이를 사용한다. ex) 192.168.123.123
  • 위와 같은 체계를 IPv4 (버전4) 라고하며 IPv4의 주소 갯수는 2^32 약 43억개 정도 이다.
  • 인터넷을 사용하는 전자기기 및 컴퓨터가 많아짐에 따라 IPv6가 등장 하였다
    • IPv6는 2^128개의 주소를 가질수 있다.
  • IP주소에는 사용 용도가  정해진 IP주소들이 있다.
    • 127.0.0.1은 localhost, 현재 사용 중인 로컬 PC를 지칭
    • 0.0.0.0 255.255.255.255 : brodcast adress로 로컬 네트워크에 접속된 모든 장치와 소통하는 주소
  • 서브넷 마스크
    • IP의 네트워크 영역과 호스트 영역을 구분하기 위해 사용한다.
    • IP가 192.168.100.1이고 서브넷 마스크가 255.255.255.0인 경우
    • 해당 IP는 192.168.100.0 네트워크에 속한 호스트 이고
    • 해당 네트워크 영역에 브로드 캐스트 주소는 192.168.1.255 이다.
    • 255.255.0.0이면 네트워크영역은 192.168.0.0, 브로드 캐스트 주소는 192.168.255.255 
  • IP 프로토콜은 비연결성, 비신뢰성의 특성을 가지고있어 한계가 있기 때문에 이를 보완하기 위해 TCP와 UDP가 있다. 

 

MAC 주소

  • 각 네트워크 기기는 처음부터 제조사에서 할당하는 고유 시리얼인 MAC주소를 가지고 있다.
  • IP와 MAC주소를 조합해야만 네트워크를 통한 통신이 가능
  • 이더넷에서 MAC주소를 사용하고, TCP/IP에서 IP를 사용한다.
  • 같은 LAN에 속해있으면 우선 상대방의 MAC주소를 파악하여(ARP) 통신한다.

 

TCP와 UDP

  • 네트워크 계층과 응용 계층을 중개하는 역할을 한다.
  • TCP와 UDP의 차이
  TCP UDP
서비스 타입 연결 지향적 데이타그램 지향적
신뢰성 데이터 전송 표적 기기까지 전송을 보장 전송이 보장되지 않음
순서 보장 전송하는 패킷들의 순서 보장 패킷순서 보장안됨, 응용 계층에서 관리해야함
속도 UDP에 비해 느리다 TCP에 비해 빠르다
  • TCP는 신뢰적인 대신 속도가 비교적 느리고, UDP는 신뢰적이지 않은 대신 속도가 빠르다.
  • HTTP의 경우 TCP를 사용한다. - 모든 데이터가 제대로 송수신 되어야 한다.

 

TCP 3-way handshake

  • TCP는 1970년대 미 국방부가 미국,영국,프랑스 대학들의 연구자들과 협력하여, 국가간 전쟁중에도 데이터의 온전성과 통신기능의 원활한 사용을 위해 개발하였다.
  • 3-way handshake는 양 끝단(end to end) 기기의 신뢰성 있는 데이터 통신을 하기위해, TCP 연결을 설정하는 방식 3단계로 구성되어 있다. - 사전적으로 악수를 의미한다. 대화하기전 악수를 하며 인사하는것과 같다.
    1. SYN : 송신자(sender)는 수신자(reciver)와 연결 설정하기 위해, segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 함께 전송 - sender가 reciver에게 통신을 하고싶다고 요청하는것
    2. SYN/ACK : reciver는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답, Acknowledgement(ACK)는 응답으로 보내는 segment가 유요한 syn요청을 받았는지 의미 - reciver가 sender에게 전송 받을 준비가 됬다고 보내는 것
    3. ACK : sender는 받은 ACK를 reciver에게 전송하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 reciver가 확인할 수 있고, 실제 데이터 전송이 시작된다.

3way handshake

 

UDP

  • 신뢰적이지 않지만 데이터의 빠른전송이 필요한 경우 사용한다.
  • TCP를 사용하게 되면 3-way handshake를 선행해야 하므로 사용할때 latency가 발생할 수 있다.
  • 예를 들면 게임이나 음성채팅 같은 경우 즉작적인 송수신이 필요한데 tcp를 사용하면 latency가 발생할 가능성이 높다.
  • 데이터 손실이 발생 할 수 있기때문에 개발자가 이를 보완하기 위해서 애플리케이션 내에서 추가 기능을 구현 할 수도 있다.
  • 연결간 어떠한 설정도 필요없기 때문에 파라미터값이 존재하지 않아 TCP보다 더 많은 클라이언트를 수용 할 수 있다.

PORT

  • IP주소만 있다면 한 IP주소에서 여러 애플리케이션을 동작할때 각 애플리케이션을 구분 할 수 없다.
  • 포트 번호는 대상 IP 기기의 특정 애플리케이션을 구분하는 번호 이다.
  • 포트 번호는 0~65535 까지 사용가능하다. 0~1023번 까지는 주요 통신을 위한 규약으로 이미 정해져 있다.
port number name 용도
0 ~ 1023  Well-known port 시스템 사용 번호 (슈퍼 유저 권한 필요)
1024 ~ 49151 Registered port 특정 프로토콜이나 애플리케이션에서 사용 하는 번호
49152 ~ 65535 Dynamic port 애플리케이션 또는 임시로 사용하는 번호

 

자주 사용하는 Well-Known port

  • 80 : HTTP - 웹서버  
  • 443 : HTTPS - 웹서버 (SSL)
  • 110 : POP3 - 메일 읽기
  • 25 : SMTP - 메일 전송
  • 22 : SSH - 원격 로그인 (cli)
  • 21 : FTP - 파일 전송
  • 23 : Telnet - 암호화되지 않은 텍스트 통신
  • 53 : DNS - 도메인 질의
  • 123 : NTP - 시간동기화 

URL (Uniform Resource Locator)

  • 웹에서 어떤 자원을 찾기 위한 브라우저에서 사용되는 메커니즘, 인터넷상에서 html이나 이미지등 리소스를 위치를 특정하는 서식
  • 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다.
  • URL의 구분
    • scheme://hosts:port/url-path?query 
    • scheme - 통신 프로토콜
    • hosts - 웹페이지, 이미지등의 파일이 위치한 웹서버의 도메인 또는 ip 
    • port - 포트번호
    • url-path - 웹서버의 루트디렉토리부터 해당하는 파일의 위치까지의 경로
    • query = 웹서버의 전달하는 추가 적인 질문
    • ex) https://dev-novel.tistory.com:443/manage/newpost/73?type=post
      • scheme : https
      • hosts : dev-novel.tistory.com
      • port : 443
      • url-path : manage/newpost/73
      • query : ?type=post

'CS > 네트워크' 카테고리의 다른 글

DNS  (0) 2023.03.27
Comments