응용 계층의 역할    

 

 우리는 웹 사이트를 보거나 메일을 보내거나 받을 때 애플리케이션을 사용한다. 웹 브라우저나 메일 프로그램 등과 같은 애플리케이션은 사용자가 하고 싶은 일을 할 수 있도록 도와준다. 애플리케이션은 서비스와 요청하는 측과 서비스를 제공하는 측으로 나뉘는데 서비스를 요청하는 측은 클라이언트(Client), 제공하는 측을 서버(Server)라고 한다. 

 

 웹 브라우저나 메일 프로그램은 클라이언트, 웹 서버 프로그램과 메일 서버 프로그램은 서버가 된다. 이러한 애플리케이션은 응용 계층에서 동작한다.  응용 계층에서는 클라이언트의 요청을 전달하기 위해 서버가 이해할 수 있는 메세지(데이터)로 변환하고 전송 계층으로 전달하는 역할을 한다. 

 

 웹 브라우저나 메일 프로그램은 클라이언트, 웹 서버 프로그램과 메일 서버 프로그램은 서버가 된다. 이러한 애플리케이션은 응용 계층에서 동작한다.  응용 계층에서는 클라이언트의 요청을 전달하기 위해 서버가 이해할 수 있는 메세지(데이터)로 변환하고 전송 계층으로 전달하는 역할을 한다. 

 

 

 

 이처럼 클라이언트와 서버가 통신하려면 응용 계층의 프로토콜을 사용해야 한다. 프로토콜에는 웹 사이트를 볼 때는 HTTP, 파일을 전송할 때는 FTP, 메일을 보낼 때는 SMTP, 메일을 받을 때는 POP3 등이 있다. 또한, 네트워크에서 컴퓨터나 네트워크에 붙여진 이름을 기반으로 IP 주소를 알아내는 것을 이름 해석(Name resolution)이라고 하는데, 이를 위해 DNS를 사용한다. 

 

 결국, 응용 계층각각의 애플리케이션에 대응되는 데이터를 전송하는 역할을 한다. 

 

 

 


 

    웹 서버의 구조    

 

 인터넷에서 핵심적인 역할을 하고 있는 WWW(World Wide Web)은 줄여서 웹(Web)이라고 불린다. WWW는 HTML, URL, HTTP라는 세 가지 기술이 사용된다. 

 

 HTML(Hyper Text MarkUp Language)은 웹 페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업(MarkUp)언어 이다. 제목이나 목록같은 문장 구조를 지정하거나 이미지, 동영상 파일을 보여 줄 때도 태그를 사용한다. 또한, 하이퍼텍스트(Hypertext)는 하이퍼링크(Hyperlink)를 사용해 아이콘이나 버튼 등에 있는 링크를 클릭하면 다른 사이트로 이동할 수 있다. 이동한 사이트에서는 html 파일이나 이미지 파일이 웹 서버에서 전송된다. 

 

 

 

 클라이언트(웹 브라우저)는 웹 사이트를 보기 위해 서버(웹 서버 프로그램)의 80번 포트를 사용하여 HTTP 통신을 한다. 다음 그림과 같이 클라이언트에서 HTTP 요청(Request)을 보내고 서버에서 HTTP 응답(Response)을 반환한다. 

 

 

 클라이언트가 데이터를 요청할 때는 요청 정보(GET 등), 파일 이름, 버전 등을 서버에 전송한다. 그러면 서버는 응답으로 요청을 정상적으로 처이했다는 메세지(OK 등) 정보를 반환하고 payment.html을 클라이언트로 보낸다. 

 

 HTTP 버전에 대해 잠시 살펴보면

 

  • HTTP 1.0 버전: 요청을 보낼 때마다 연결했다가 끊는 작업을 반복
  • HTTP 1.1 버전: Keepalive라는 기능이 추가되어서 연결을 한 번 수립하면 데이터 교환을 마칠 때까지 유지하고, 데이터 교환을 모두 끝내면 연결을 끊는 구조이다. 또한, 요청도 순서대로 처리하는 특징이 있다. 
  • HTTP 2.0 버전: HTTP 1.1 버전은 요청을 순서대로 응답을 반환하는 특징을 보완(이전 요청이 길어지면 다음 요청의 처리가 느려짐)

 

 

 


 

    DNS 서버 구조    

 

 기본적으로 컴퓨터(서버)에는 IP주소가 있어서 인터넷을 통해 웹 서버에 접속하여 웹 사이트를 볼 수 있다. 하지만, 우리는 웹 브라우저 주소 창에 URL(Uniform Resource Locator)를 통해 웹 사이트에 접속한다. 

 

 컴퓨터(서버)에 접속하려면 IP 주소를 입력해야 하는데 사람들은 www.github.com를 입력해서 들어간다. 이처럼 URL을 IP주소로 변환해서 해당 웹 사이트에 들어갈 수 있게 해주는 서비스(시스템)가 DNS 이다. 따라서, IP 주소인 222.235.255.255와 같이 기억하기 어려운 숫자들보다는 URL을 사용하면 더 쉽게 기억할 수 있을 것이다. DNS 서버의 이름해석(Name Resolution) 기능을 사용하면 가능하다. 

 

 www.github.com에서 www는 호스트 이름(서버 이름)을 나타내고 github.com은 컴퓨터나 네트워크를 식별하기 위해 사용하는 도메인 이름이다. 

 

 

 DNS 서버는 전 세계에 흩어져 있고 모두 계층적으로 연결되어 있다. 그래서 첫 번째 DNS 서버가 도멘인의 IP 주소를 모르르 경우 연결되어 있는 다른 DNS 서버에 요청을 해서 IP 주소를 알아낸다. 

 

 


 

    메일 서버 구조    

 

 메일을 송수신 하기 위해서 사용해야 하는 포로토콜은 두 가지가 존재한다. 메일을 보내는 데 사용되는 프로토콜은 SMTP(Simple Mail Transfer Protocol)고, 메일을 받는 데 사용되는 프로토콜은 POP3이다. STMP는 25번, POP3는 110번 포트를 사용한다. 

 

 

  1. 클라이언트1은 포털사이트나 회사의 메일 프로그램을 이용해서 메일 서버1로 메일을 보낸다.(STMP)
  2. STMP를 사용하여 메일 서버 1에서 메일 서버 2로 메일을 전송한다.
  3. 메일 서버 2는 POP3를 사용하여 메일 서버2의 메일 박스에서 메일을 가져와 컴퓨터 2로 전송한다. 

 

 

 

 

 

    TCP란?    

 

 TCP는 신뢰성과 정확성을 우선으로 하는 연결형 통신 프로토콜이다. TCP 헤더를 붙여 세그먼트를 만드는 캡슐화 과정을 진행한다. 그리고 데이터를 전송하기 위해 필요한 가상의 독점 통신로를 확보하는 작업인 연결이라는 작업을 수행한다. 연결은 TCP 헤더의 코드비트 부분의 SYN와 ACK를 통해 3-way 핸드셰이크라고 하는 패킷 요청을 세 번 교환하는 행동을 하여 연결을 확립한다. 그리고 FIN와 ACK를 통해  4-way 핸드 셰이크를 진행해 연결이 끊어진다. 

 

 

 [참고]

 TCP 헤더에 관한 내용은 전 포스트 글을 참조하세요.

 

 

 

8. 전송 계층 - 1 (신뢰 데이터 전송)

전송 계층 물리 계층, 데이터 링크 계층, 네트워크 계층 이 세 개의 계층만 있으면 목적지에 데이터를 보낼 수 있다. 하지만, 데이터가 손상되거나 유실되면 이 세 개의 계층에서는 아무것도 해��

almotjalal.tistory.com

 

 


    일련번호와 확인 응답 번호란?    

 

  3-way 핸드셰이크를 통해 연결이 확보되어 실제 데이터를 보내거나 데이터를 받을 때에는 TCP 헤더의 일련번호(Sequence number)와 확인 응답 번호(Acknowledgement number)를 사용한다. 

 

 

TCP 헤더

 

 

  TCP는 데이터를 분할해서 보내는데 일련번호 송신 측에서 수신 측에 이 데이터가 "몇 번 째 데이터인지" 알려 주는 역할을 한다. 즉, 전송된 데이터에 일련번호를 부여해 수신자는 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있다. 

 

 확인 응답 번호수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려 주는 역할을 한다. 그래서 이 번호는 다음 번호의 데이터를 요청하는데 사용한다. 예를 들어, 10번 데이터를 수신하면 11번 데이터를 송신 측에 요청한다. 이 과정을 확인 응답이라고 한다. 

 

 데이터를 전송하기 전 단계에서 3-way 핸드셰이크로 연결 수입이 이루어지고 데이터를 전송하기 위해 이번 통신에 사용하는 일련번호인 3001번과 확인 응답 번호인 4001번으로 가정해보면

 

 

 

 

  1. 컴퓨터 1은 컴퓨터 2로 200바이트의 데이터를 전송한다.
  2. 컴퓨터 2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터 번화를 확인 응답 번호에 넣는다. 다음에 수신하고자 하는 데이터는 3001+200=3201이므로 3201번부터 보내 달라고 요청한다.
  3. 컴퓨터 1은 컴퓨터 2로 3201번부터 200바이트의 데이터를 전송한다. 
  4. 컴퓨터 2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣는다. 다음에 수신하고자 하는 데이터는 3201+200=3401번부터 보내 달라고 요청한다. 

  

 위 과정을 데이터 전송이 완료될 때 까지 반복된다. 데이터가 항상 올바르게 전달되는 것은 아니므로 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에는 같은 데이터를 재전송하게 되어 있는데 이것을 재전송 제어라고 한다. 

 

 


    윈도우 크기란?    

 

   위에서 설명한 과정은 세그먼트(데이터) 하나를 보낼 따마다 확인 응답을 한 번 반환하는 통신이라서 비효율적이다. 위 방식 대신에 매번 확인 응답을 기다리는 대신 세그먼트 연속해서 보내고 난 다음에 확인 응답을 반환하면 효율이 높아진다. 

 

  수신 측에서 받은 세그먼트를 일시적으로 보관하는 장소가 있는데 그 장소를 버퍼(Buffer)라고 한다. 이 버퍼 덕분에 세그먼트를 연속해서 보내도 수신 측은 대응할 수 있고 확인 응답의 효율도 높아진다. 하지만, 세그먼트를 대량으로 받아 버퍼가 처리하지 못하는 경우가 생기는데 이 현상을 오버플로(Over flow)라고 한다. 

 

 그래서 오버플로가 발생하지 않도록 버퍼의 한게 크기를 알고 있어야 하는데 그것을 TCP 헤더에서 윈도우 크기 값에 해당한다. 윈도우 크기(Window size)얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다. 즉, 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터의 크기를 말한다. 

 

 

 그럼 송수신측은 서로의 윈도우 크기를 어떻게 확인할 수 있을까? 바로 3-way 핸드셰이크를 할 때 판단한다. 

 

 컴퓨터2는 컴퓨터 1의 윈도우 크기가 3000이라는 것을 알게 되며 컴퓨터1은 컴퓨터 2의 윈도우 크기가 2000이라는 것을 알게 된다.

 

 

 오른쪽과 같은 방식으로 수신 측이 윈도우 크기를 가지고 있다면 확인 응답을 받지 않고도 세그먼트(데이터)를 연속적으로 전송할 수 있다.

 


    포트 번호란?    

 

   전송 계층에서 연결 확립, 재전송 제어, 윈도우 제어 등과 같은 기능에 의해 TCP는 데이터를 정확하게 전달할 수 있었다.  전송 계층은 데이터를 정확하게 전달하는 기능뿐만 아니라 전송된 데이터의 목적지가 어떤 애플리케이션(웹 또는 메일 등)인지 구분하는 역할도 수행한다.

 

 목적지가 어떤 애플리케이션인지 구분하지 못하는 것을 방지하기 위해서는 출발지 포트 번호(Source port number)목적지 포트 번호(Destination port number)가 필요하다. 

 

 

 포트 번호는 0~65535번을 사용할 수 있는데 0~1023번은 주요 프로토콜이 사용되도록 예약되어 있으며 잘 알려진 포트(Well-known ports)라고 한다. 1024번은 예약되어 있지만 사용되지 않는 포트이고, 1025번 이상은 랜덤 포트라고 해서 클라이언트 측의 송신 포트로 사용된다. 아래 표에 해당하는 포트번호는 서버에서 주로 사용되는 애플리케이션 번호이다. 

 

 

 이처럼 동작하는 애플리케이션은 각각 포트번호가 있어서 다른 애플리케이션과 서로 구분된다. 데이터를 전송할 때는 상대방의 IP 주소가 필요하지만, 어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트 번호가 필요하다. 

 

 

 

 


    UDP란?    

  UDP는 TCP와 다르게 비연결형 통신으로 데이터를 전송할 때 TCP 처럼 시간이 걸리는 확인 작업을 일일이 하지 않는다. 또한, 신뢰성과 정확성을 중요시 한 TCP와는 다르게 UDP는 효율성을 중요시 한다. 

 

 UDP의 장점은 데이터를 효율적으로 빠르게 보내는 것이라서 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳이 사용된다. 동영상을 TCP로 전송하게 되면 수신 확인하는 데 시간이 너무 오래 걸려서 동영상을 원활하게 볼 수 없다. 

 

 TCP는 TCP 헤더가 붙은 데이터를 세그먼트라고 했는데 UDP 에서는 UDP 헤더가 붙은 데이터UDP 데이터그램이라고 한다. UDP 헤더는 올바른 목적지의 애플리케이션으로 데이터를 전송하기 위해 필요한 정보가 기록되어 있다. 

 

 

 또한 UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다. 이것을 브로드캐스트(Broadcast)라고 하는데 브로드캐스트는 목적지에 관계없이 랜에서 일괄적으로 통보를 보낼 수 있어 가능하다. TCP는 3-way 핸드셰이크와 같이 데이터를 전송할 때도 확인 응답을 하나씩 보내야 하기 때문에 브로드캐스트와 같이 불특정 다수에게 보내는 통신은 적합하지 않을 뿐더러 목적지를 지정하지 않으면 안 되기 때문에 일괄 통신을 할 수 없다. 

 


   TCP와 UDP 비교    

 

 

 

 

    전송 계층   

 

  물리 계층, 데이터 링크 계층, 네트워크 계층 이 세 개의 계층만 있으면 목적지에 데이터를 보낼 수 있다. 하지만, 데이터가 손상되거나 유실되면 이 세 개의 계층에서는 아무것도 해줄 수 없다.

 

 이를 방지해주는 역할은 OSI 모델에서 전송 계층이 수행한다. 전송 계층목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다. 

 

 

 전송 계층에는 오류를 점검하는 기능이 있는데, 오류가 발생하면 데이터를 재전송하도록 요청한다. 또한, 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능을 가지고 있다. 예를 들어, 웹에서 사용하는 데이터인데 메일 프로그램에 전송하는 것을 방지해준다. 

 

 


 

    연결형 통신과 비연결형 통신   

 

  전송 계층의 특징을 간단히 설명하면 신뢰성/정확성과 효율성으로 구분할 수 있다. 

 

 신뢰성/정확성은 데이터를 목적지에 문제없이 전달하는 것이고, 효율성은 데이터를 빠르고 효율적으로 전달하는 것이다. 이렇게 신뢰할 수 있고 정확한 데이터를 전달하는 통신을 연결형 통신이라고 하고, 효율적으로 데이터를 전달하는 통신을 비연결형 통신이라고 한다. 

 

 

 그렇다면 신뢰성과 정확성이 보장되지 않는 비연결형 통신은 보통 언제 쓰일까? 동영상을 볼 때 많이 사용한다. 동영상은 신뢰할 수 있고 정확한 데이터 전송보다는 빠른 전송이 필요하기 때문이다. 데이터가 늦게 도착해서 화면이 버벅거리는 동영상보다는 데이터가 조금 유실되더라도 원활하게 보는 것이 좋다.  

 

 또한, 연결형 통신 프로토콜에는 TCP가 사용되고, 비연결형 통신 프로토콜에는 UDP가 사용된다.

 


    TCP란   

 

  데이터 링크 계층에서 이더넷 헤더를 붙여 프레임을 만들고 네트워크 계층에서 IP 헤더를 붙여 IP 패킷을 만든 것처럼 전송 계층에서도 TCP 헤더를 붙여 세그먼트(Segment)를 만드는 캡슐화를 진행한다. 

 

 

 

 

  TCP는 연결형 통신에 사용한다. 연결형 통신은 꼼꼼하게 상대방을 확인하면서 데이터를 전송해야 하는데 그 전에 해야할 일은 연결(Connection)이라는 가상의 독점 통신로를 확보해야 한다. 

 

※ 연결(Connection): TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로이며 연결을 확립하고 데이터를 전송한다.

 

 연결을 확립하기 위해서는 TCP 헤더의 코드 비트를 확인해야 한다. 코드 비트는 연결의 제어 정보가 기록되는 곳이다. 코드 비트 중에서도 연결 요청을 뜻하는 SYN확인 응답을 뜻하는 ACK이 중요하다.

 

 


    3-way 핸드 셰이크   

 

  연결(Connection)은 SYN와 ACK를 사용하여 확립할 수있다. 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환하는데 다음과 같이 세 번 확인 한다. 

 

 

  1. 통신을 하려면 컴퓨터2에게 허가를 받아야 하므로, 컴퓨터1에서 연결 확립 허가를 받기 위한 요청(SYN)를 보낸다.
  2. 컴퓨터2는 컴퓨터1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)를 보내고 동시에 컴퓨터1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)를 보낸다.
  3. 컴퓨터2의 요청을 받은 컴퓨터1은 컴퓨터2로 허가한다는 응답으로 연결 확립 응답(ACK)을 보낸다. 

 

  이처럼 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드 셰이크(three-way handshake)라고 한다. 

 

  연결을 끊을 때에는 FIN와 ACK를 사용하여 확립할 수있다. FIN은 연결 종료를 뜻한다. 이처럼 연결을 종료하기 위해 패킷 요청을 네 번 교환하는 것을 4-way 핸드 셰이크(four-way handshake)라고 한다. 

 

  1. 컴퓨터 1에서 컴퓨터 2로 연결 종료 요청(FIN)을 보낸다.
  2. 컴퓨터2에서 컴퓨터 1로 연결 종료 응답(ACK)을 반환한다.
  3. 또한 컴퓨터 2에서도 컴퓨터 1로 연결 종료 요청(FIN)을 보낸다.
  4. 컴퓨터 1에서 컴퓨터 2로 연결 종료 응답(ACK)을 반환한다.

 

 

 

 

    IP 주소의 구조   

 

  IPv4주소는 32비트이며 32비트를 8비트로 단위로 나눠서 표현하는 것을 옥텟(Octet)이라고 하는데 32비트를 4개의 옥텟으로 나누어 10진수로 표현한다.

 

 

  또한, 이 IP 주소는 네트워크 주소(네트워크 ID)와 호스트 주소(호스트 ID)로 나뉘는데 네트워크 주소는 모든 호스트들을 관리하기가 어렵기 때문에 네트워크에 범위를 그룹(호스트들의 집합)으로 지정해 어떤 네트워크인지를 나타내고 호스트 주소는 네트워크 그룹 내에서 어느 컴퓨터인지를 나타낸다. 이 두 가지 정보가 합쳐져서 IP 주소가 된다.

 

 IP 주소 = 네트워크 주소(네트워크 ID) + 호스트 주소(호스트 ID)

 

 


    IP 주소 클래스(Class)   

 

  IP 주소는 네트워크 주소를 크게 만들거나 호스트 주소를 작게 만들어 네트워크 크기를 조정할 수 있다. 이 네트워크 크기는 클래스(Class)라는 개념으로 구분한다. 

 

 

 

  일반 네트워크에서는 A~C 클래스를 사용할 수 있다. A 클래스는 처음 8비트가 네트워크 주소이고 나머지 24비트가 호스트 ID이다. A 클래스의 1옥텟의 범위는 00000001~11111111로 10진수로는 1~127이 된다. 2~4옥텟의 범위는 각각 00000000~11111111로 0~255가 된다. 

 

 따라서, A 클래스의 네트워크 ID와 호스트 ID의 32비트 전체 범위는 1.0.0.0 ~ 127.255.255.255가 된다. 

 

 

 

 B 클래스는 처음 16비트가 네트워크 ID이고 나머지 16비트가 호스트 ID 이다. B 클래스의 1옥텟의 범위는 10000000~10111111로 10진수로는 128~191이 된다. 2~4옥텟의 범위는 각각 00000000~11111111로 0~255가 된다. 

 

 따라서, B 클래스의 네트워크 ID와 호스트 ID의 32비트 전체 범위는 128.0.0.0 ~ 191.255.255.255가 된다. 

 

 

 

 C 클래스는 처음 24비트가 네트워크 ID이고 나머지 8비트가 호스트 ID이다. C 클래스의 1옥텟의 범위는 11000000~11011111로 10진수로는 192~223이 된다. 2~4옥텟의 범위는 각각 00000000~11111111로 0~255가 된다. 

 

 따라서, C 클래스의 네트워크 ID와 호스트 ID의 32비트 전체 범위는 192.0.0.0 ~ 223.255.255.255가 된다. 

 

 

 

 

 여기서 주의할 점은 공인 IP 주소와 사설 IP 주소가 정해져 있다는 것이다.

 

 

 가정 LAN에서는 주로 C 클래스의 사설 IP 주소인 192.168.X.X가 주로 사용된다. 윈도우에서는 검색 창에 cmd를 입력 후 명령 프롬프트 창에서 ipconfig 명령어를 입력하면 사용할 수 있다. 

 

 

 [참고]

  • 공인 IP: 전 세계에서 유일한 IP로 ISP가 제공하며 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 장비로부터 접근이 가능하다. 
  • 사설 IP: 한 네트워크 안에서 사용되는 IP 주소 IPv4의 부족으로 인해 모든 네트워크가 공인 IP를 사용하는 것은 불가능하기 때문에 네트워크 안에서 라우터를 통해 할당받는 가상의 주소이다. 외부에서 접속할 수 없다. 

 


 

    네트워크 주소와 브로드캐스트 주소   

 

  IP 주소에는 네트워크 주소와 브로드캐스트 주소도 존재하는데, 이 두 주소는 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용해서는 안 된다.

 

 트워크 주소는 호스트 ID가 0(2진수로 00000000)인 주소이고 전체 네트워크에서 작은 네트워크를 식별하는데 사용된다. 즉, 그 작은 네트워크를 대표하는 주소가 된다. 

 

 브로드 캐스트 주소는 호스트 ID가 255(11111111)인 주소이다. 해당 네트워크에 있는 컴퓨터나 장비 모두에게 한 번에 데이터를 전송하는데 사용되는 IP 주소이다. 즉, 해당 네트워크에 데이터를 전송하려면 호스트 ID에 255를 설정하면 된다. 

 

 

 


 

    서브넷의 구조   

 

  A 클래스 네트워크는 호스트 ID가 24비트여서 IP 주소를 1677만 7214개를 사용할 수 있다. 만약에 이 수 많은 컴퓨터에 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 전송하는데 이는 네트워크가 정체되고 지연을 유발할 것이다.

 

 이처럼 A 클래스의 대규모 네트워크를 작은 네트워크로 분할하여 브로드캐스트로 전송되는 패킷의 범위를 줄일 수 있는데, 이처럼 네트워크를 분할하는 것을 서브넷팅(Subneting)이라고 하고, 분할된 네트워크를 서브넷(Subnet)이라고 한다. 

 

 그러면 기존의 네트워크 ID와 호스트 ID로 구성되어 있던 것이 네트워크 ID, 서브넷 ID, 호스트 ID로 나눠지게 된다. 즉, 호스트 ID에서 비트를 빌려 서브넷으로 만들 수 있다.

 

 


 

    서브넷 마스크   

 

  IP 주소를 서브넷팅하면 어디까지가 네트워크 ID이고 어디부터가 호스트 ID를 판단하기 힘들다. 이를 위해 서브넷 마스크라는 값을 사용한다. 즉, 서브넷 마스크는 네트워크 ID와 호스트 ID를 식별하기 위한 값이다. 이 값은 프리픽스(Prefix) 표기법으로 사용할 수 있는데 슬래시(/)로 비트 수를 나타낸다. 

 

 예를 들어, C 클래스 IP 주소를 서브넷팅해보면 C 클래스는 일반적으로 네트워크 ID가 24비트이다. 하지만, 호스트 ID에서 4비트를 빌려 네트워크 ID를 28비트로 만들면 네트워크 ID는 24비트, 서브넷 ID는 4비트, 호스트 ID는 4비트가 된다. 밑의 예제에서는  255.255.255.240/28로 표현할 수 있다.

 

 

 

 즉, 서브넷 마스크는 IP 주소의 네트워크 부분만을 나타나게 하여 같은 네트워크인지 판별하게 하는 마스크이다.

 

 


 

    라우터의 구조   

 

  그렇다면 네트워크를 분리하는 역할은 누가할까? 라우터(Router)가 수행한다. 

 

 

 

 네트워크를 분할한 다음에 컴퓨터 한 대가 다른 네트워크로 접속하려면 어떻게 해야 할까? 예를 들어 위의 그림에서 192.168.1.0/24 네트워크의 첫 번째 컴퓨터에서 192.168.2.0/24 네트워크의 첫 번째 컴퓨터로 데이터를 전송하려면 라우터의 IP 주소를 설정해야 한다. 이것은 네트워크의 출입구를 설정하는 것으로 기본 게이트웨이(Default Gateway)를 설정해야  한다. 

 

 기본 게이트웨이는 컴퓨터의 네트워크를 설정하는 화면에 있다. 윈도우 10의 경우 "자동으로 IP 주소 받기"를 체크하면 기본 게이트웨이가 자동으로 설정된다. 

 

 

 "자동으로 IP 주소 받기"를 설정하면 192.168.1.0/24 네트워크의 첫 번째 컴퓨터의 기본 게이트웨이가 설정되었지만 이것만으로는  192.168.2.0/24 네트워크의 첫 번째 컴퓨터에 데이터를 보낼 수 없고 추가로 라우터의 라우팅(Routing)의 기능이 필요하다. 

 


 

    라우팅이란?   

 

  라우팅(Routing)은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송한다. 해당 경로 정보는 라우팅 테이블(Routing table)에 등록되어 있다. 

 

 

 

  라우팅 테이블에 경로 정보를 등록하는 방법은 수동 등록과 자동 등록이 있다. 수동으로 등록하는 방법은 소규모 네트워크에 적합하고, 자동으로 등록하는 방법은 대규모 네트워크에 적합하다. 자동으로 등록하는 방법은 라우터 간에 경로 정보를 서로 교환하여 라우팅 테이블 정보를 자동으로 수정해 준다.

 

 이처럼 라우터 간에 라우팅 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜(Routing Protocol)이라고 한다. 이 라우팅 프로토콜을 설정하여 라우터 간에 경로 정보를 서로 교환하고 그것을 라우팅 테이블에 등록해 나간다. 라우팅 프로토콜에는 RIP, OSPE, BGF 등이 있고 각각 다른 특징을 가지고 있다. 

 

 

   네트워크 간의 연결 구조   

 

 데이터링크 계층에서는 이더넷 규칙을 기반으로 데이터를 전송하지만 같은 네트워크에 있는 컴퓨터끼리만 가능했다. 인터넷이나 다른 네트워크에 있는 목적지로 데이터를 전달하려면 네트워크 계층의 기술이 필요하다. 아래 그림과 같이 데이터링크 계층의 기능만으로는 해당 네트워크 안에서만 통신이 가능하다는 것을 알 수 있다. 

 

 

 

 

 이렇게 네트워크 간의 통신을 가능하게 해주는 역할을 네트워크 계층에서 해준다. 데이터링크 계층에서 한 컴퓨터에서 다른 컴퓨터로 데이터를 전송하기 위해 스위치라는 장비가 필요했던 것처럼 네트워크 계층에서는 다른 네트워크로 데이터를 전송하기 위해 라우터(Router)라는 네트워크 장비가 필요하다.

 

 

이미지출처: 위키피디아

 

 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려주는 역할을 한다. 하지만, 데이터를 보내려는 목적지를 모르면 라우터도 경로를 알려주지 못한다. 데이터링크 계층에서에서는 MAC 주소만으로도 통신할 수 있었지만 MAC 주소만으로 다른 네트워크에 데이터를 보낼 수 없다. 따라서 네트워크를 식별할 수 있는 다른 주소가 필요한데 그 주소를 IP 주소(IP Address)라고 한다. 

 


   IP란?   

 

 IP 주소는 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있도록 해주는 주소이다. 따라서, IP 주소만 있다면 다른 네트워크에 있는 목적지를 지정할 수 있다. 하지만, IP 주소로 목적지를 지정하는 것뿐만 아니라 데이터를 어떤 경로로 보낼지도 결정해야 한다. 이처럼 목적지 IP 주소까지 어떤 경로로 데이터를 보낼지 결정하는 것라우팅(Routing)이라고 한다. 이 결정을 라우터가 수행하는데 라우터에는 라우팅 테이블(Routing Table)이 있어서 경로 정보를 등록하고 관리한다. 

 

 네트워크 계층에는 IP(Internet Protocol)라는 프로토콜이 있는데 통신 규격인 TCP/IP의 그 IP이다. 데이터링크 계층에서 이더넷 헤더를 붙이는 캡슐화를 해서 프레임을 만든 것처럼 네트워크 계층에서는 IP 헤더를 붙여 캡슐화를 진행한다. 

 

 

IP 헤더를 붙여 캡슐화를 진행해 만든 것을 IP 패킷이라고 한다. IP 헤더에는 정말 많은 정보가 포함되어 있는데 중요한 점은 출발지 IP 주소와 목적지 IP 주소가 담겨져 있다는 것이다. 

 


   IP 주소의 버전  

 

 여기서 의문이 드는 것은 IP 주소는 누가 만들고 어떻게 제공받는 것인가이다. IP 주소는 바로 인터넷 서비스 제공자(ISP)가 제공한다. ISP는 통신사를 예로들 수 있는데 우리나라에선 KT, SKT, LG U+ 등에 해당한다. 

 

 IP는 IPv4IPv6라는 두 가지 버전이 존재한다. 원래는 IPv4만 사용했었는데 이는 32비트로 되어 있어서 IP 주소를 약 43억개를 만들 수 있어 충분하다고 생각했다. 하지만 인터넷이 널리 보급되면서 IP 주소가 부족해졌고 현대에는 128비트로 구성된 IPv6를 많이 사용한다. 

 

 그리고 IPv4 주소는 주소의 수가 고갈될 수 있기 때문에 인터넷에 직접 연결되는 컴퓨터나 라우터에는 ISP가 제공하는 공인 IP 주소를 할당하고 회사나 가정의 랜에 있는 컴퓨터에는 사설 IP 주소를 할당한다. 

 

 예를 들어 아래 그림과 같이 랜 안에 컴퓨터가 여러대 있지만 공인 IP 주소를 컴퓨터 한 대당 할당하면 한정되어 있는 주소가 빨리 소진될 것이다. 따라서, 공인 IP 주소는 라우터에만 할당하고 랜 안에 있는 컴퓨터들에는 랜의 네트워크 관리자가 사설 IP 주소를 할당하거나 라우터의 DHCP(Dynamic Host Configuration Protocol) 기능을 사용하여 IP 주소를 자동으로 할당한다. 이런 방식으로 공인 IP의 주소를 절약할 수 있다. 

 

 


   IP 주소의 구조  

 

  데이터 링크 계층에서 MAC 주소는 48비트 였고 16진수로 표현한다. 반면에, 공인 IP 주소와 사설 IP 주소는 모두 32비트이며 10진수로 표현한다.

 

 IP 주소가 32비트이기 때문에 사람이 한 눈에 보기에는 어렵다. 따라서 32비트를 8비트 단위로 나눠서 표현하는데 이 때 8비트를 옥텟(Octet)이라고 부른다. 32비트를 4개의 옥텟으로 나누고 좀 더 읽기 쉽도록 10진수로 변환한다. 

 

 

 

 

   ARP란 무엇인가?   

 

 ARP(Address Resolution Protocol)목적지 컴퓨터의 IP 주소를 이용하여 MAC 주소를 찾기 위한 프로토콜이다. 이더넷 프레임을 전송하려면 목적지 컴퓨터의 MAC 주소를 알아야 하는데 출발지 컴퓨터가 목적지 MAC 주소를 알아내기 위해 네트워크에 브로드캐스트하는데 이것을 ARP 요청(ARP Request)라고 한다. 

 

 여기서 브로드캐스트(Broadcast)는 출발지 컴퓨터에 연결된 모든 컴퓨터에 요청을 보내는 방식을 말한다. 이 요청에 대해 지정된 IP 주소를 가지고 있지 않은 컴퓨터는 응답하지 않고 지정된 IP 주소를 가지고 있는 컴퓨터는 MAC 주소를 응답으로 보낸다. 이것을 ARP 응답(ARP Response)라고 한다. 이 때에는 유니캐스트를 사용한다.  유니캐스트(Unicast)는 자신의 MAC 주소와 목적지의 MAC 주소를 첨부하여 전송하는 방식을 말한다. 

 

 ARP 응답으로 출발지 컴퓨터는 MAC 주소를 얻게 되고 이더넷 프레임을 만들 수 있게 된다. 또한, 출발지 컴퓨터는 MAC 주소와 IP 주소의 매칭 정보를 메모리에 보관하는데 이를 ARP 테이블(ARP Table)이라고 한다. 이후 데이터 통신은 자신의 컴퓨터에 보관된 ARP 테이블을 참고하여 전송한다. 

 

 하지만 IP 주소가 변경되면 해당 MAC 주소도 함께 변경되므로 제대로 통신할 수 없다. 따라서 ARP 테이블에서는 보존 기간을 ARP 캐시로 지정하고 일정 기간이 지나면 삭제하고 다시 ARP 요청을 한다.

 

 윈도우에서 ARP 캐시의 내용을 확인하려면 cmd 창에서 arp -a 명령어를 사용하면 되고 ARP 캐시를 강제로 삭제하려면 arp -d 명령어를 사용하면 된다. 

 

 

[정리]

 

  1. ARP: 네트워크 계층 주소와 데이터 링크 계층 주소 사이의 변환을 담당하는 프로토콜이며 IP 주소를 물리 주소인 MAC 주소로 변환하는데 사용한다.
  2. ARP 캐시: 가장 최근에 변환한 IP와 하드웨어 주소(MAC 주소)를 매핑하려 보관하고 있는 램의 한 영역이다.
  3. ARP 요청: IP 주소를 대치할 수 있는 물리 주인 MAC 주소를 찾아내기 위해 보내는 브로드캐스트 패킷 요청이다.
  4. ARP 응답: ARP 요청에 대한 응답으로 요청한 IP 주소에 대한 물리 주소인 MAC 주소가 실려 있는 유니캐스트 패킷 응답이다.

 

 

 

 

 

   이더넷(Ethernet)이란 무엇인가?   

 

 데이터 링크 계층은 네트워크 장비 간에 신호를 주고 받는 규칙을 정하는 계층으로, 랜에서 데이터를 정상적으로 주고받기 위해 필요한 계층이다. 그 규칙들 중 일반적으로 많이 사용되는 규칙이 이더넷(Ethernet)이다. 즉, 랜에서 적용되는 규칙이다.

 

 

 

 

 이더넷은 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고 받을 때 사용한다. 하지만 허브는 전기 신호를 전달받을 포트뿐만 아니라 나머지 포트에도 전달한다는 문제점이 있다. 관계없는 다른 컴퓨터들도 데이터를 받으면 곤란한 상황이 발생할 수 있다.

 

 이러한 경우를 대비해 규칙을 정해둔다. 데이터에 목적지 정보를 추가해서 보내 목적지 이외의 컴퓨터는 데이터를 받더라도 무시하도록 말이다. 

 

 

 

 

 또한, 컴퓨터 여러 대가 동시에 데이터를 보내면 데이터들이 서로 부딪히는 충돌(collision)이 발생할 수 있다.

 

 

 

 이더넷은 데이터를 보내는 시점을 늦춰서 충돌을 방지하기 위한 구조로 설계되어 있다.  

 

 

 이러한 기법을 CSMA/CD라고 하는데 정의는 다음과 같다.

 

  • CS: 데이터를 보내려고 하는 컴퓨터가 케이블에 신호가 흐르고 있는지 아닌지를 확인하는 규칙
  • MA: 케이블에 데이터가 흐르고 있지 않다면 데이터를 보내도 좋다는 규칙
  • CD: 충돌이 발생하고 있는지를 확인하는 규칙

 하지만, 스위치(Switch)라는 네트워크 장비가 등장하면서 CSMA/CD는 거의 사용하지 않게 되었다. 

 


 

    MAC 주소란 무엇인가?   

 

 랜 카드는 비트열(0과 1)을 전기 신호로 변환한다. 이러한 랜 카드에는 MAC 주소라는 번호가 정해져 있는데, 이는 제조할 때 새겨지기 때문에 물리 주소라고 불리고 전 세계에서 유일한 번호로 할당되어 있다. MAC 주소는 48비트(6 바이트) 숫자로 구성되어 있으며, 그 중 앞 쪽 24비트는 랜 카드를 만든 제조사 번호이고 뒤 쪽 24비트는 제조사가 랜 카드에 붙인 일련 번호이다. 앞, 뒤쪽 모두 정해진 규칙이 있기 때문에 중복되지 않는다. 

 

  네트워크 통신에서 송신할 때에는 OSI 모델이나 TCP/IP 모델에서 필요한 정보를 헤더에 담아 데이터에 붙여나가는 작업인 캡슐화를 진행한다. OSI에서는 데이터 링크 계층, TCP/IP에서는 네트워크 계층에 해당하는데, 이 계층에서 이더넷 헤더와 트레일러를 붙이게 된다. 

 

 이더넷 헤더는 목적지의 MAC 주소(6 바이트), 출발지의 MAC 주소(6 바이트), 유형(2 바이트) 총 14바이트로 구성되어 있다. 

여기서 유형은 이더넷으로 전송되는 상위 계층 프로토콜의 종류를 나타낸다. 

 

 

 그리고 트레일러FCS(Frame Check Sequence)라고도 하는데, 데이터 전송 도중에 오류가 발생하는지 확인하는 용도로 사용한다. 

 

 이처럼 이더넷 헤더와 트레일러가 추가된 데이터를 프레임이라고 한다. 이 프레임은 네트워크를 통해 전송된다. 

 

 

 


 

    MAC 주소를 통한 프레임 전송 과정   

 

 

 아래 그림과 같이 컴퓨터 A에서 컴퓨터 B로 데이터 전송한다고 가정하면 이더넷 헤더에 목적지인 컴퓨터 B의 MAC 주소와 근원지인 컴퓨터 A의 MAC 주소 정보를 담는다. 그 후에 데이터에 이더넷 헤더와 트레일러를 추가하는 캡슐화 과정을 거쳐 프레임을 만들고 물리 계층에서 이 프레임 비트열을 전기 신호로 변환하여 네트워크를 통해 전송한다. 

 

 허브를 예로 들면 컴퓨터 A가 보낸 데이터를 컴퓨터 B~D에 다 전송하지만 컴퓨터 C, D는 이더넷 헤더에 붙어 있는 목적지 MAC 주소와 자신의 MAC 주소가 다르기 때문에 데이터를 파기한다. 컴퓨터 B는 목적지 MAC 주소와 자신의 MAC 주소가 일치하므로 데이터를 파기하지 않고 역캡슐화를 진행한다. 컴퓨터 B는 역캡슐화를 한 다음에 데이터를 수신한다.

 

 

 

 

 

 

 컴퓨터 A와 컴퓨터 C 동시에 컴퓨터 B로 데이터를 전송한다면 충돌이 발생할 것이다. 충돌을 방지하기 위해 CSMA/CD 규칙을 사용할 수 있다.

 


 

   스위치의 구조    

 

 스위치는 데이터 링크 계층에서 동작하며 레이어 2 스위치 또는 스위칭 허브라고 불린다. 겉모습만 봐서는 허브와 구별하기 힘들지만 허브와 다르게 데이터 충돌을 방지할 수 있다.

 

 

출처: 위키피디아

 

 

 

 스위치 내부에는 MAC 주소 테이블(Mac Address Table)이 존재하는데 이 MAC 주소 테이블은 스위치의 포트 번호와 해당 포트에 연결되어 있는 컴퓨터의 MAC 주소가 등록되는 데이터베이스이다. 

 

 맨 처음 전원을 킨 스위치 MAC 주소 테이블에는 아무것도 등록되어 있지 않지만 MAC 주소가 추가된 프레임이라는 데이터가 전송되면 MAC 주소 테이블에 포트 번호와 함께 추가가 된다. 만약 이미 등록되어 있는 MAC 주소라면 건너 뛴다. 이를 MAC 주소 학습 기능이라고 한다. 

 

 하지만 스위치도 피할 수 없는 것이 있다. MAC 주소 테이블에 MAC 주소가 등록되어 있지 않다면 허브와 같이 등록되어 있지 않은 포트 번호에 모두 전송된다는 것이다. 이를 플러딩(Flooding)이라고 부른다. 

 

 

 만약 MAC 주소 테이블에 컴퓨터 B의 MAC 주소가 등록되어 있고 컴퓨터 B로 데이터를 전송한다고 가정한다면 목적지 컴퓨터인 컴퓨터 B로만 전송하게 된다. 이를 MAC 주소 필터링이라고 한다. 즉, 불필요한 데이터를 네트워크에 전송하지 않게 되는 것이다. 

 

 

 그렇다면 지금의 MAC 주소 테이블 상태에서 만약 컴퓨터 A에서 컴퓨터 C로 데이터를 보낸다고 가정하면 어떻게 될까? MAC 주소에 해당 포트 번호의 목적지 MAC 주소가 없기 때문에 다시 플러딩이 발생한다.  

 

 



   데이터가 케이블에서 충돌하지 않는 구조   

 

 통신 방식에는 전이중 통신 방식과 반이중 통신 방식이 있다. 전이중 통신 방식은 데이터의 송, 수신을 동시에 통신하는 방식이고 반이중 통신 방식은 회선 하나로 송신과 수신을 번갈아가면서 통신하는 방식이다. 

 

 아래 그림과 같이 컴퓨터 1과 컴퓨터 2를 직접 랜 케이블로 연결한다면 선을 네 쌍을 사용하기 때문에 전이중 통신 방식이 된다. 

 

전이중 방식

 

 반면 허브 내부에는 송, 수신이 나누어져 있지 않기 때문에 컴퓨터 A와 B를 허브로 연결하면 동시에 데이터를 보낼 때 충돌이 난다. 이처럼 허브를 사용하면 회선 하나를 송신과 수신이 번갈아가면서 사용하는 반이중 통신 방식을 사용하게 된다. 

 

 

 스위치는 충돌이 일어나지 않는 구조로 되어 있기 때문에 전이중 통신 방식으로 데이터를 주고 받을 수 있다. 이처럼 허브를 사용하면 충돌로 인한 네트워크 지연이 발생하기에 최근에는 네트워크로 스위치를 사용한다. 

 

 

 

 


 

   충돌 도메인   

 

 충돌 도메인(Collision damain)은 충돌이 발생할 때 그 영향이 미치는 범위를 말한다. 허브와 스위치를 예로 들면 허브는 충돌의 영향이 모든 컴퓨터에 미치고 스위치는 전이중 통신 방식이며 접속되어 있는 모든 컴퓨터 영향을 미치지 않기에 충돌이 발생하지 않고 충돌 도메인의 범위도 컴퓨터 하나하나로 좁아진다. 

 

 

 

 

   전기신호란 무엇인가?   

 

 데이터는 전기 신호로 변환 되어 네트워크를 통해 전송된다. 네트워크 통신에서는 0과 1만 사용하기 때문에 0과 1로 이루어진 비트열을 전기 신호로 변환하는 작업이 필요하다. 

 

 그렇다면 0과 1로 이루어진 비트열을 전기 신호로 변환하는 작업은 누가 수행할까? OSI 모델에서는 물리 계층이 수행한다. 물리 계층은 컴퓨터와 네트워크 장비를 연결하고 전송되는 데이터를 전기 신호로 변환하는 계층이다. 

 

 

 

 

 그런데 0과 1을 어떻게 전기 신호로 변환할 수 있을까? 각각의 컴퓨터는 네트워크를 통해 데이터를 송, 수신 할 수 있도록 랜 카드가 메인 보드에 포함되어 있다. 이처럼 각각의 컴퓨터는 내장형 랜 카드나 별도의 랜 카드를 가지고 있기 때문에 0과 1의 정보가 컴퓨터 내부에 있는 랜 카드로 전송되고 랜 카드는 0과 1을 전기 신호로 변환한다. 

 

이미지 출처: 위키백과

 


 

   전기 신호의 종류  

 

 전기 신호에는 아날로그와 신호와 디지털 신호가 존재한다. 아날로그 신호는 물결 모양으로 전화 회선이나 라디오 방송에서 사용한다. 디지털 신호는 막대 모양으로 네트워크 데이터 전송에서 사용한다. 

 

 

 

 데이터가 어떻게 전기 신호로 변환되는지 살펴보면 다음 그림과 같이 데이터 송신 측의 0과 1의 비트열 데이터를 전기 신호로 변환하고 이 전기 신호는 네트워크를 통해 수신 측에 도착하고 수신 측은 전기 신호를 0과 1의 비트열 데이터로 복원한다.

 

 

 


 

   네트워크 전송 매체    

 

 전송 매체데이터가 흐르는 물리적인 선로를 말하는데 이는 유선과 무선으로 나뉜다.  그 중 유선에는 트위스트 페어 케이블, 광 케이블 등이 있고 무선에는 라디오파, 마이크로파, 적외선 등이 있다. 

 

 가장 많이 사용되는 트위스트 페어 케이블의 종류에는  UTP 케이블과 STP 케이블이 있다. 또한, 트위스트 페어 케이블은 일반적으로 랜 케이블이라고도 불리는데 랜 케이블의 양쪽 끝에는 RJ-45라고 부르는 커넥터가 붙어 있다. 이 커넥터를 컴퓨터의 랜 포트나 네트워크 기기에 연결할 수 있다.

 

 

 먼저, UTP 케이블은 구리 선 여덟 개를 두 개씩 꼬아 만든 네 쌍의 전선으로 실드가 없는 케이블이다. 실드는 금속 호일이나 금속의 매듭과 같은 것으로 외부에서 발생하는 노이즈를 막는 역할을 한다. UTP 케이블은 실드로 보호되어 있지 않아서 노이즈의 영향을 받기 쉽지만 저렴하기 때문에 일반적으로 많이 사용된다. 

 

 STP 케이블은 두 개씩 꼬아 만든 선을 실드로 보호한 케이블로 UTP 케이블 보단 노이즈의 영향을 매우 적게 받지만 비싸기 때문에 보편적으로 사용하지는 않는다. 

 

 

출처: 링크허브 공식블로그(https://linkhub.tistory.com/85)

 

 그렇다면 구리 선을 두 개를 비틀어 만드는 이유는 무엇일까? 바로 노이즈 때문이다. 노이즈의 영향을 적게 받기 위해 구리 선 두 개를 비틀어 꼬아 케이블을 만든다. 

 



   랜 케이블의 종류   

 

 랜 케이블의 종류에는 다이렉트 케이블과 크로스 케이블이 있다.

 

 다이렉트 케이블은 구리 선 여덟 개를 같은 순서로 커넥터에 연결한 케이블이고 컴퓨터와 스위치를 연결할 때 사용된다. 

 

 크로스 케이블은 구리 선 여덟 개 중 한쪽 커넥터의 1번과 2번에 연결되는 구리 선을 다른 쪽 커넥터의 3번과 6번에 연결한 케이블로 컴퓨터 간 직접 랜 케이블로 연결할 때 사용된다. 

 

 실제로 다이렉트, 크로스 케이블 모두 1, 2, 3, 6번 구리선을 사용하고 나머지 네 개의 선은 사용하지 않는다.

 

 만약 양쪽 컴퓨터에서 1번과 2번으로 데이터를 전송하면 어떻게 될까? 데이터 충돌이 발생한다. 이 때문에 크로스 케이블은 일부로 중간에 전선을 교차시켜 송, 수신 측이 올바르게 연결되도록 돕는다. 

 

 

출처: https://helpdeskgeek.com/networking/connect-two-computers-using-a-crossover-cable/

 

 



   물리 계층의 네트워크 장비   

 

 물리 계층의 네트워크 장비에는 리피터와 허브가 있다. 

 

 리피터전기 신호를 정형(노이즈로부터 복원)하고 증폭하는 기능을 가진 네트워크 중계 장비이다. 이는 멀리 있는 상대방과도 통신할 수 있도록 파형을 정상으로 만드는 기능을 한다. 하지만, 요즘은 네트워크 장비가 리피터 기능을 지원하기 때문에 리피터를 쓸 필요가 없어졌다. 

 

 또한, 허브는 포트를 여러 개 가지고 있기 때문에 랜 케이블을 사용하여 여러 컴퓨터와 허브를 연결하고 통신할 수 있다. 이 때문에 어떤 특정 포트로 부터 데이터를 받는다면 해당 포트뿐만 아니라 나머지 모든 포트에도 받은 데이터를 전송하는 특징이 있다.

 

 예를 들어, 허브에 컴퓨터 A~D가 연결되어 있다고 가정해보자. 컴퓨터 A에서 B로 데이터를 전송하면 허브에 연결되어 있는 컴퓨터 C, D에도 데이터가 전송된다. 하지만 컴퓨터 C와 D에는 불필요한 데이터일 수 있는데 이처럼 허브는 스스로 판단하지 않고, 전기 신호를 모든 포트로 보내서 더미 허브라는 이름으로 불리기도 한다. 이러한 문제점을 해결하기 위해 스위치라고 하는 네트워크 장비가 등장했다. 스위치는 데이터 링크 계층에서 설명하고 여기서는 생략한다. 

 

또한, 허브도 리피터와 마찬가지로 전기 신호를 정형하고 증폭하는 기능을 한다.  

 

   프로토콜이란 무엇인가?   

 

 

 일상 생활에서 지켜야 하는 약속이 있듯이, 네트워크에서 문제 없이 통신하려면 약속(규칙)을 지켜야 한다. 예를 들어, 언어가 서로 다른 외국인들이 대화를 하려고 하면 서로 알아들을 수 없기 때문에 곤란함을 겪을 것이다. 하지만, 서로 알아들을 수 있는 언어를 정해놓고 대화를 한다면 문제가 없을 것이다. 

 

 

 

 이처럼 네트워크에서도 컴퓨터 간에 정보를 주고 받을 때 통신 방법에 대한 규칙을 정해 놓는데 이를 프로토콜(protocol)이라고 한다. 편지를 예로 들면, 편지를 쓰고 편지를 우체통에 넣을 때 주소를 적지 않거나 우표를 붙이지 않은 채로 넣게되면 편지를 어디로 보내야 할 지 알 수 없으므로 우편 배달부는 곤란해진다. 

 

 따라서, 이런 곤란한 상황이 발생하지 않도록 몇 가지 규칙을 정해야 한다. 규칙에는 편지를 쓰는 규칙, 편지를 보내는 규칙, 우체국의 규칙 등 여러 규칙이 있는데 서로 독립적인 여러 규칙을 거쳐야 한다. 

 


 

   통신 규격 - OSI 모델  

 

 지금은 상상도 할 수 없지만 예전에는 같은 회사의 컴퓨터끼리만 통신이 가능했다고 한다. 즉, A 사의 컴퓨터와 B 사의 컴퓨터와는 통신할 수 없었다. 이런 곤란한 상황이 발생하지 않도록 공통으로 사용할 수 있는 표준 규격을 정해야 했다. 네트워크에서는 국제 표전화기구(ISO)의 OSI 모델TCP/IP 모델과 같이 데이터를 주고받기 위한 통신 규격이 정해져 있다. 

 

 컴퓨터에서 컴퓨터로 데이터를 송, 수신 할 때 컴퓨터 내부에서는 여러 가지 일을 한다. 이 때, OSI 모델을 적용한다면 일곱 개의 계층(레이어)에서 일을 하게 된다. 

 

 

 


 

   통신규격 - TCP/IP 모델   

 

 TCP/IP 모델은 인터넷 모델이라고도 하며, 아래 그림과 같이 OSI 모델에서 응용, 표현, 세션 계층이 TCP/IP 모델에서 응용으로 합쳐지고 물리, 데이터 링크 계층이 네트워크 접속 계층으로 합쳐져 일곱 개의 계층에서 네 개의 계층으로 줄었다. 그리고 각각 계층에는 다양한 프로토콜들이 존재한다. 

 

 

 


 

   데이터 전송   

 

 OSI 모델 통신 규격으로 데이터 전송하는 과정을 살펴보면 다음과 같다. 데이터를 전송(송신)하는 쪽은 상위 계층에서 하위 계층으로 데이터를 전달한다. 데이터를 받는(수신) 쪽은 하위 계층에서 상위 계층으로 각 계층을 통해 전달된 데이터를 받게 된다. 이 때, 각 계층은 독립적이므로 데이터가 전달되는 동안에 다른 계층의 영향을 받지 않는다. 

 

 

 


 

   캡슐화와 역캡슐화   

 

 데이터를 송수신 할 때에 주의할 점이 있다. 데이터를 보내려면 데이터의 앞 부분에 필요한 정보를 붙여 다음 계층으로 보내야 하는데, 이 정보를 헤더라고 한다. (1장에서 패킷은 헤더, 데이터, 트레일러로 이루어져 있다고 했는데, 그 헤더를 말한다.) 헤더에는 데이터를 전달받을 상대방에 대한 정보도 포함되어 있어야 한다. 즉, 헤더는 데이터의 내용이나 성격을 식별 또는 제어하는 데 사용한다. 

 

 

 이처럼 데이터를 전송하는 쪽에서 상위 계층의 통신 프로토콜 정보를 헤더에 담아 데이터에 붙여 나가는 것캡슐화(encapsulation)이라고 하고 데이터를 받는 쪽에서 헤더를 제거하는 것을 역캡슐화(decapsulation)라고 한다.

 

 

 

 송신 측에서 웹 사이트에 접속하려고 한다고 가정해본다.

 

 [캡슐화]

 

     1. ①과 같이 응용 계층에서는 웹 사이트를 접속하기 위한 요청 데이터가 만들어 진다. 

     2. ②와 같이 전송 계층에 전달 된다. 이 때, 신뢰할 수 있는 통신이 이루어지도록 데이터에 헤더를 붙인다.

     3. ③과 같이 전송 계층에서 만들어진 데이터를 다른 네트워크와 통신하기 위해 헤더를 붙인다.

     4. ④와 같이 네트워크 계층에서 만들어진 데이터를 물리적 통신 채널을 연결하고 통신하기 위해 헤더와 트레일러를 붙인다.

         데이터 링크 계층에서 만들어진 데이터는 최종적으로 전기 신호로 변환돼서 수신 측에 도착한다. 

 

 [역캡슐화]

 

     5. ⑥과 같이 데이터 링크 계층의 헤더와 트레일러를 제거하고 데이터를 전달한다. 

     6. ⑦~⑨와 같이 각 계층의 헤더를 제거하면서 수신 측으로 데이터를 전달한다. 

 

 

 이와 같이 데이터 한 개를 전달하는 데에 네트워크 통신의 내부에서는 여러 규칙을 통해 문제 없이 데이터를 전달해야 한다.

 

   네트워크란 무엇인가?   

 

 

 보통 두 대 이상의 컴퓨터를 연결한 것을 컴퓨터 네트워크라고 하며 서로 통신하여 컴퓨터 간 필요한 데이터를 주고 받을 수 있다. 독립적인 컴퓨터에서 파일을 전송하려고 하면 메모리나 USB, 디스켓 등의 저장매체를 사용해야 하는데 네트워크 덕분에 오늘날 쉽게 전송하고 다운받을 수 있다. 

 

 흔히 PC나 노트북, 스마트폰, 프린터 기기 등 노드라고 불리는 종단장치와 라우터, 스위치와 같은 내부 장치들이 통신 링크로 연결된 형태이며 통신 링크에는 유선과 무선으로 나뉜다. 

 


 

   네트워크와 인터넷의 차이점   

 

 네트워크와 인터넷은 많이 헷갈리는 개념이다. 인터넷도 컴퓨터 네트워크의 일종이지만 구체적인 정의는 다음과 같다.

 

전 세계적으로 수억 개의 컴퓨팅 장치를 연결하는 TCP/IP 프로토콜 슈트로 구현된 컴퓨터 네트워크

 

 아직 TCP/IP에 대해 개념이 정확히 잡히지 않았지만 확실한 것은 인터넷도 컴퓨터 네트워크의 일종이라는 것을 알 수 있다. 결론적으로 인터넷은 네트워크간의 통신이며 통신을 하기 위해선 TCP/IP와 같은 프로토콜(통신 규약)을 사용한다. 그리고 우리는 인터넷을 이용하기 위해 크롬, 파이어 폭스, 사파리 등과 같은 웹 브라우저를 사용한다.

 


 

   패킷이란?   

 

 그렇다면 네트워크에서 어떻게 서로 정보를 주고 받을까? 바로 패킷(Packet)을 사용한다.

 

 패킷은 패키지(package)와 버킷(bucket)의 합성어로, 네트워크를 통해 전송되는 데이터의 작은 조각들을 말한다. 통신망을 통해 전송을 쉽게 하기 위해 큰 데이터도 작게 나누어서 보내는것이 규칙이다.

 

 왜 한번에 보내지 않고 작은 조각들로 나누어서 보내는 것일까? 대역폭(bandwidth) 때문이다. 대역폭이란 네트워크에서 수용 가능한 최대 전송 속도로 정보를 전달할 수 있는 단위 시간당 전송량을 뜻한다. 만약 한 데이터가 네트워크의 대역폭을 많이 점유한다면 다른 패킷의 전송 흐름을 막을 수 있기 때문에 아래 그림과 같이 곤란한 상황이 발생한다.

 

 

   분할된 패킷이 순서에 맞지 않게 들어온다면?   

 

 패킷은 헤더, 데이터, 꼬리(테일러)로 이루어져 있는데, 헤더에는 목적지의 주소와 순서 등이 테일러에는 에러에 대한 정보가 담겨있다. 이메일로 예를 들면, 우리가 전송하고자 하는 이메일을 적당한 길이로 분할하여 여러 개의 패킷을 만들고 각각의 패킷에는 순서에 해당하는 번호가 붙는다. 목적지에 대한 주소가 기록되면 에러에 대한 내용도 담기게 되고 목적지로 전송을 하게 된다. 전송된 패킷들은 목적지에서 다시 순서에 맞게 패킷을 원래 파일로 재조립하는 과정을 거치게 된다.

 

 


 

   네트워크의 범위(종류)   

 

    1.  LAN

        - 랜(LAN)은 근거리 통신망으로 보통 같은 건물 안을 범위로 하는 네트워크로 집이나 사무실과 같이 제한된 곳에서 컴퓨

          터나 프린터와 같은 장치들이 서로 연결된다.

   

   2. MAN

      -  맨(MAN)은 도시권 통신망으로 도시 정도 규모에 펼쳐져 있는 네트워크로 서울특별시나 한 대학교 캠퍼스를 예로 들 수

         있다.

   

   3.WAN

      - 왠(WAN)은 광역 통신망으로 지역적으로 넓은 범위에 구축된 네트워크로 랜과 랜을 연결한 것이라고도 볼 수 있다. 보통

        인터넷을 예로 들 수 있다. 아무래도 WAN은 LAN과 MAN보다 범위가 넓기 때문에 속도가 느리며 오류가 많다.

 


 

    기업에서의 네트워크(LAN)   

 

 기업에서는 조직의 내부 네트워크와 외부 네트워크(인터넷) 사이에 위치한 서브넷인 비무장지대(DMZ)가 존재한다. DMZ 내의 컴퓨터는 오직 외부 네트워크에만 연결할 수 있기 때문에 DMZ 안에 있는 호스트들은 내부 네트워크로 연결할 수 없다. 이는 DMZ에 있는 호스트들에게 외부 네트워크로 서비스를 제공하면서 DMZ 안의 호스트의 침입으로부터 내부 네트워크를 보호하는 역할을 한다. DMZ는 일반적으로 웹 서버, DNS 서버, 메일 서버와 같이 외부에서 접근할 필요가 있는 서버들을 위해 사용된다. 

 

 

 

 또한, 기업에서는 서버를 운영하기 위해 서버를 사내에 있는 랙에 설치하거나 데이터 센터를 따로 두거나 클라우드에 둘 수 있다. 사내 또는 데이터 센터에 서버를 두고 운영하는 방식을 On-Premise라고 한다.