날아라쩡글이의 블로그입니다.

네트워크 본문

중앙 HTA (2106기) story/Network story

네트워크

날아라쩡글이 2021. 10. 18. 16:01
반응형
  • 여러 대의 컴퓨터가 통신회선을 연결되어 있는 것을 의미한다. 
  • Server - > 서비스를 제공하는 프로그램
  • Client -> 서비스를 제공받는 프로그램
    • 일반적인 컴퓨터는 클라이언트 역활을 진행한다. 
  • 하나의 Server에 다수의 Client가 연결된다. 
  • 1:M 구조로 
    • 이것을 클라이언트/서버구조라고 한다. 

용어 

  • host
    • 네트워크에 연결되어 있고, 다른 호스트와 통신할 수 있는 컴퓨터를 의미한다. 
    • Ip주소를 갖고 있기 때문에 Ip주소로 식별한다. 
    • 인터넷에서 식별하기 위해 부여된 고유한 주소로 확인한다. 
    • 클라이언트/ 서버프로그램 전부 host프로그램이다.
    • cmd창에서  ipconfig을 검색하면 ip주소를 확인 할 수 있다. 
  • ip address 
    • 네트워크에서 호스트를 식별하기 위해서 부여되는 고유한 주소를 의미한다. 
    • Ipv4, Ipv6 주소 체계가 있다.
  • MAC address 
    • 컴퓨터를 설치하면 얻게되는 주소로써 물리적 주소를 의미한다. 
    • LAN카드, 고유번호, 무선 VLAN카드 

Port번호 

  • 실행 중인 서버프로그램의 논리적인 연결지점을 의미한다. 
    • 논리적인 연결지점이라고 하는 점은 물리적이지는 않다는 의미이다. 
  • 컴퓨터의 고유식별 Ip주소 :  포트번호 는 서버프로그램을 식별할 수 있는 값을 의미한다. 
    • 대표전화번호에서 해당 서비스 내선번호로 연락하는 방법이 ip주소에서 port주소를 연결하는 것과 동일하다.
    • 내선번호가 한개있는 것처럼 다른 프로그램의 사용번호는 다른 port프로그램에서 사용할 수 없다. 
    • 모든 특정 프로그램에서 각번호가 있는 것은 port번호이며, 선택해서 사용하면 된다. 
  • 모든 서버프로그램은 특정 포트번호를 가지고 실행된다. 
  • 포트번호를 이용해서 서비스를 제공하는 서버프로그램을 선택할 수 있게 된다. 
  • 포트갯수는 0~65535까지 총 65536개가 있다. 
  • 포트번호의 범위
    • 0~1023 : 국제인터넷주소관리 기구에서 특정서버용으로 미리 예약한 포트이다. 
    • 1024~49151 :특정 벤더(회사)사가 등록해서 사용할 수 있는 포트이다. 
    • 49152~65535 : 개인적인 목적으로 사용할 수 있는 포트번호이다
  • 대표적인 포트번호 
    • 웹서버의 포트번호 = 80번
    • FTP의 포트번호 = 21번
    • tenlet의 포트번호 = 23번
    • SSH 의 포트번호 =22번
    • https의 포트번호 = 443
  • 서버접속시 주소표기법 
    • 프로토콜 :// 주소 : 포트번호 
    • 웹=http://www.naver.com: 80
    • ftp = ftp ://192.168.10.65:21
      • 원래 인터넷을 접속할 때는 ip주소 : 웹서버기본포트번호를 입력해야 입력할 수 있다. 
      • 웹 서버의 기본포트번호로 입력하기 때문에 생략이 가능하다. 원래는 웹사이트처럼 : 80으로 port번호를 입력해주어야한다. 

프로토콜(protocol)

  • 네트워크에 연결된 host간의 데이터 교환을 위해서 미리 약속된 통신기반이다. 
  • 어떤 형태로 데이터를 주고 받을지 , 약속된 통신규약이며, 약속된 통신기반이라고 한다. 
  • 물리적 혹은 논리적인 통신을 처리하기 위한 규칙세트이다. 

Ip(Internet Protocol)

  • Ip주소 체계를 규정하는 프로토콜이다. 
  • 총 2가지의 형태를 가지고 있다. Ipv4 , Ipv6
  • Ipv4
    • 32Bit로 구성된다. 
    • 총 2^32개만큼의 주소를 가진다. 
    • 현재의 경우 이 주소를 전부 사용했다. 
    • 클래스 
      • 클래스 A 주소 : xxx.???.???.??? - 1.???.???.??? ~ 126.???.???.??? 
        • 거의 미국이 가지고 있다. 
      • 클래스 B 주소 : xxx.xxx.???.??? - 128.xxx.???.??? ~ 191.xxx.???.???
      • 클래스 C 주소 : xxx.xxx.xxx.??? - 192.xxx.xxx.??? ~ 223.xxx.xxx.???
        • 클래스 전부 서로서로 연결이 되어 있다고 생각하면 된다. 
        • C클래스의 경우 daum과 naver가 있다. 
    • 구분
      • 공인 ip주소 
        • 다른 컴퓨터와 통신할 때 사용하는 ip주소이다. 
        • ip주소를 요청 후 ip주소를 얻게 된다. 
      • 사설 ip주소 
        • 가상, 사설망내에서 사용할 수 있는 ip주소를 의미한다. 
        • 그냥 사설 네트워크 망을 얻어서 사용한다. 
        • 사용크기에 따라서 분류가 가능하다. 
          • 컴퓨터 실습실 등 실내에서만 통해서 사용가능한 주소이다. 
          • 외부인터넷의 경우 공유기를 사용한다. 
      • 특수목적 Ip주소 
        • 루프백(Loopback) ip로 자기자신을 나타내는 ip주소를 의미한다. 
        • 127.0.0.1
        • this와 같은 의미이다. 
        • 객체 자기자신을 가르키는 것이다. 
      • 서브넷마스크 
        • 서브넷 마스크는 Ip주소를 내부ip주소인지 외부 ip주소인지 구분할 때 사용하는 것이다. 
        • ip주소와 서브넷마스크 주소를 논리 곱연산을 수행해서 같은 주소가 나오면 내부 ip 다른 주소가 나오면 외부ip로 판단하는 것이다. 
        • 서브넷 마스크의 사용방법
          • 1번 서버
          • 192.168.1.0~192.168.1.255 
          • 네트워크 ip 192.168.1.0
          • 브로드 캐스트 ip  192.168.1.255
            • 네트워크 ip와 브로드캐스트 ip는 대역이 특수 대역으로 부가가 된 부분이기 때문에 
            • 192.168.1.1~192.168.1.254 여기에만 부여가 가능하다. 
              • 즉, 254개만 부여가 가능하다. 
          • 2번 서버 
          • 192.168.2.0~192.168.2.255
          • 네트워크 ip 192.168.2.0
          • 브로드캐스트 ip 192.168.2.255
            • 네트워크 ip오아 브로드 캐스트 ip는 대역이 특수 대역으로 부가가된 부분이기 때문에 
            • 192.168.2.1~192.168.1.254여기에만 부여가 가능하다. 
              • 즉,254개만 부여가 가능하다. 
          • 1번서버를 나눠보자  
            • 1번서버 
              • 1100 0000. 1010 1000.0000 0001.0000 0000
              • 여기에서 서브넷 마스크 255.255.255.0을 AND연산해준다.
              • 1111 1111.1111 1111.1111 1111. 0000 0000
              • 1111 1111.1111 1111.1111 1111. 0000 0000으로 결과 값이 나온다. 
              • 그런데 1번서버에서 254개에서 128개로 나눠서 통신이 되지 않게 나누고 싶은 것이다.
                • 딱 반으로 나눠서 통신이 되지 않게  
              • 1100 0000. 1010 1000.0000 0001.0000 0000를 
              • 1100 0000. 1010 1000.0000 0001.1000 0000으로 변경해준다. 128로 
              • 그러면
              • 1111 1111.1111 1111.1111 1111.0000 0000 서브넷마스크와 논리곱은 255.255.255.0
              • 1111 1111.1111 1111.1111 1111.1000 0000 서브넷마스크와 논리곱은 255.255.255.128이라는 결과 값으로 2개의 서버가 나온 것을 알 수 있다.
              • 네트워크 ip가 2개 나오고, 브로드캐스트 ip도 2개가 된다. 
                • 네트워크 ip 192.168.1.0 ,192.168.1.128
                • 브로드캐스트 ip 192.168.1.127 / 192.168.1.255
                • 서버가 2개로 나뉘게 된것이다. 
              • 이렇게 내부 ip주소와 외부ip주소인지를 구분할 때 사용을 한다. 
              • 그리고 서로의 ip주소를 확인하여 외부의 ip주소로 판단하는 기능을 갖고 있다. 
              • ip주소를 더 작은 단위로 나눌 수 있다. 
                • 4부분으로 더 작게 만들 수 있다. 
                • 네트워크 크기를 더 작게 제어가 가능하고, 같은 네트워크망을 표시할 수 있다. 
                • 255,192,128로 서브넷마스크로 네트워크로 크게 혹은 작게 만들 수 있다. 
                • 네트워크를 더 작게 만들어 줄 수 있는 AND연산으로 1이 나와야 같은 네트워크로 생각하고, 데이터 교환이 가능하다. 
                  • 1의 갯수가 낮아지면 크게 만들어주고, 1의 갯수가 많으면 적게 만들어진다. 
                • 더 작은 단위로 나눠지게 되면 브로드 캐스트의 메세지가 전달이 낮아지기 때문에 라우터의 브로드캐스팅의 부담을 줄일 수 있다. 

Ipv6

  • Ipv4은 10진수로 작성이 되어있고 
  • Ipv6은 16진수로 작성이 되어있다.
  • 현재는 Ipv4에서 Ipv6으로 넘어가는 과도기이다. 
  • 128bit로 구성된다. 
    • ip주소의 고갈문제,  인터넷의 확장성, 데이터 보안의 강화를 위하여 정의가 되었다. 
    • ip주소의 갯수는 2^128개이다. 
      • Ipv4의 4배의 수이다. 
    • 주소표기법은 16비트씩 16진수로 표시한다. 
      • 2001:0d5f:451d:0010:38da:6b43:191c:1d1d

DNS(Domain Name Server) : 도메인 네임 서버 

  • ip주소에 대한 domain name에 대해 제공해주는 것을 의미한다. 
  • 이름을 설정하지 않으면 인터넷이 되지 않는다. 
  • 웹사이트의 도메인 이름과 ip주소를 서로 변환해주는 역활을 수행하는 서버다.
  • 도메인의 이름에 해당하는 ip주소정보를 조회할 수 있다. 
    • www.daum.net으로 ip주소를 외우지는 못하지만, 기억하기 쉬운 링크와 도메인 주소를 외우게 된다. 
    • 한국서버에서 없는사이트인 경우 한국DNS에서 외국 DNS를 찾아서 연결을 해준다.
  • 168.126.63.1,   168.126.63.2   한국통신 DNS서버 

게이트웨이 (Gateway), 라우터(Router)

  • 서로 다른 네트워크로 이동하기 위한 통로다 
  • 내부네트워크가 아닌 외부네트워크 통신을 하는 경우 반드시 게이트웨이를 거쳐야한다. 
    • 같은 ip시 브로드캐스트로 ip를 전송한다.
    • 다른 ip주소시 서브넷마스크를 AND연산후 다른 주소인지를 확인한다. 
    • 192.168.2.30 으로 데이터를 전달하고 싶다. 
    • 게이트웨이로 연결되어서 바깥으로 나간다. 
      • 메세지 보내고 싶은곳이 같은 서버가 아닌 것을 확인하면 게이트웨이로 가서 
      • 라우터에서 전달 후 특정 ip에게 전달된다. 
    • 우리가 현재사용하고 있는 인터넷의 경우 집에있는 모뎀이  
      • 게이트 웨이이다. 
      • 중간에 엄청난 망을 통하고 거쳐서 도착하게 된다. 

TCP/IP

  • 메세지를 전달하게 될 경우 메세지는 엄청난 조각(패킷)단위로 쪼개져서 전달하게 된다.
  • 받는 입장에는 라우터로 전송된 것을 받고, 도착을 하게 되면 순서대로 재조립을 진행한다. 
  • IP의 경우 호스트 식별 주소체계이며, TCP는 데이터를 재조립하는 것을 의미한다. 
    • TCP
      1. 데이터를 전송시 패킷 단위를 재조립할 줄 알아야한다. 
      2. 데이터가 오고 손실이 있었는지에 대한 확인규칙, 순서에 대한 규약, 규칙이 필요하다. 
      3. 데이터가 미국에서 한국으로 오는 도중 번개, 손실, 데이터가 깨졌을 경우 오류를 검출하는 것이 필요하다
  • TCP
    • 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 표준을 정의하는 프로토콜
  • IP
    • 호스트를 식별하기 위한 ip주소체계를 정의하는 프로토콜
  • TCP+IP 
    • 오류검출방식, 패킷 순서 재조립하는 정보들의 규약을 합쳐서 인터넷을 안전하게 만드는 인터넷 기반의 프로토콜이라고 한다. 
  • 응응용계층은 특정클라이언트 특정서버를 사용하는 프로토콜로
    • http, https, telnet ,SMTP등의 프로토콜리 존재한다. 
    • TCP는 잘보냈는지 몇번째로 전송되었는지 택배회사가 체크하는 것이고, 
    • IP는 받는 사람, 주는 사람의 주소를 작성한 것 
    • 그리고 그 택배의 물건이 무엇인지는 http, https, telnet, SMTP에서 데이터를 정하는 것이라고 할 수 있다. 
  • 반드시 중계부분이 있어야지 전달 할 수 있다. 

SOCKET으로 메세지를 전달하는 방법 

  1. 서버에 소켓을 생성하기
  2. 클라이언트 연결 요청 대기 accept()로 대기한다. 
  3. 제한된 host의 3000번 port를 사용중인 서버소켓에 연결 요청을 한다. ->block 메소드인 accept()가 실행되면서 socket이 만들어 진다. 
  4. 소켓끼리 연결한다. OutputStream, InputStream
  5. 읽고, 쓰는 브릿지 객체와 2차Stream객체를 생성하고, 연결한다. 
    • 입력되있는 사진의 모습이 연결된 형태이다. 
  6. 클라이언트에서는 서버메세지를 보낸다. 그리고 block하는 nextLint()메소드로 대기한다.
  7. 서버메소드에서는 nextLine()으로 block중이였고, 메세지를 수신하고, 업무로직, 응답데이터를 송신하는 객체와 메소드를 입력한다. 
  8. 클라이언트에서는 메세지를 수신하고, 출력후 close()메소드로 종료한다.

Input메소드는 block메소드라고 한다. 

  • accept() 에서 멈춰있다. 
    • 클라이언트와 연결이 될 때까지 
  • read.nextLine()에서 멈춰있다. 
    • 메세지를 읽을 때까지 실행된다
    • 클라이언트 메세지를 보낸후 readLine()대기 후 메세지를 기다린다. 
    • 클라이언트에게 메세지 수신한다. 
  • 네트워크 자바는 socket으로 수신한다. 
  • 모든데이터는 입력을 했으면 출력이 있고, 출력이 있다면 입력이 존재한다. 

그러나 모든 서버는 한가지만의 클라이언트의 입력을 받고 대기만 할 수는 없는 법이다. 연결수락, 연결 송신, 여러개의 객체를 만들어서 다수의 작업이 동시에 실행되도록 만들어야한다. 

그것이 멀티쓰레드이다. 

java.io ->socket사용통신은 메소드들이 실행흐름을 멈추게 한다. blocking으로 필수적으로 메소드를 사용하게 한다. 

java.nio라는 것을 자바 7부터 만들어서 socket대신 channel을 사용하게 한다. 그리고, 네티라는 API를 이용하여, I/O와 쓰레드를 구현하게 한다. 아주 적은 수의 메서드로 동작하도록 구현되어있다. 

이 부분은 네트워크에서 다시 다루도록 한다. 

반응형
Comments