본문 바로가기

웹개발/CS

[network] 네트워크 기초 지식

 

OSI 참조 모델

'국제표준화기구(ISO)가 컴퓨터 통신 기능을 계층 구조로 나눠서 정리한 모델로, 통신할 때의 규칙 모음과 같은 것이다. 

네트워크에서 그런 규칙을 프로토콜이라고 부른다.

  • ex) http://www.bbhye1.tistory.com/   ->  여기서 http 가 통신 프로토콜

OSI 참조 모델에서 프로토콜은 7개의 계층 구조를 가진다. 

 

계층 규정 내용 프로토콜
물리 계층 (제 1계층) 애플리케이션별로 서비스를 제공하는 방법을 규정 애플리케이션 프로토콜(HTTP 등)
데이터링크 계층 (제 2계층) 애플리케이션 데이터를 통신에 적합한 형태로 변환하는 규정
네트워크 계층 (제 3계층) 데이터를 흘려보내는 논리적인 통신로(커넥션)의 확립과 연결 끊기에 대해 규정
전송 계층 (제 4계층) 데이터를 통신 상대네게 확실하게 전달하는 방법을 규정 TCP, UDP
세션 계층 (제 5계층) 동일 또는 다른 네트워크의 기기와 연결하기 위한 주소와 경로의 선택 방법을 규정 IP, ICMP, ARP
표현 계층 (제 6계층) 직접 연결된 기기 사이에 논리적인 전송로(데이터링크)를 확립하는 방법을 규정  이더넷
응용 계층 (제 7계층) 네트워크 케이블의 재질이나 커넥터 형식, 핀의 나열 방법 등 물리적인 요소를 모두 규정

 

각각의 계층은 서로 다른 역할을 가지고 있으며 따로따로 작동해서 계층간에 서로 영향을 받지 않아 계층별로 분리된 트러블 슈팅이 가능하다. 

또 실제 네트워크에서 사용하는 프로토콜은 OSI 참조 모델의 많은 프로토콜 중 한정되어 일부만 사용되고 있다. 

 

 

 

 

 

프로토콜의 역할 

프로토콜 : 통신할 때의 규칙 모음

  • 캡슐화 : 통신 기능에서 필요한 각종 데이터를 추가하는 것, 계층을 넘어설 때마다 데이터를 캡슐에 넣는다(데이터를 추가한다). 
  • 캡슐 해제화: 캡슐화와 정반대의 처리, 계층을 넘어설 때마다 데이터를 캡슐에서 꺼낸다.

 

서버는 상위계층부터 하위 계층으로 캡슐화 처리를 해서 전송용 데이터를 만든다. -> 클라이언트는 하위 계층에서 상위 계층으로 캡슐 해제화 처리를 하여 원래의 애플리케이션 데이터로 되돌려간다.  

 

 

..

 

 

이더넷

제 1 계층과 2계층의 필수 불가결한 규격으로 유선 네트워크의 대부분은 이더넷이다.

제 3계층의 패킷에 헤더(프리앰블: 목적지와 출발지를 나타내는 헤더)나 FCS(Frame Check Sequence: 비트 오류 체크)를 추가하여 프레임을 만든다. 

이더넷은 MAC 주소라는 식별자를 사용하여 컴퓨터를 식별하고 자신의 MAC 주소를 '출발지 MAC 주소'로 상대방의 MAC 주소를 '목적지 MAC 주소'로 해서 헤더에 넣어 프레임을 만든다.

 

 

 

MAC 주소

48비트로 이루어진 식별자로 8비트마다 하이픈이나 콜론으로 구분하여 16진수를 표시한다.

ex)  "a8:66:7f:04:00:80", "a8-66-7f-04-00-80"

 

MAC 주소는 미국전기전자학회(IEEE)가 할당한 기기의 제조업체 코드 OUI(Organigationally Unique Identifier)로 이루어진 상위 24비트와 제조업체 내부에서 기기별로 고유한 값을 할당한 코드인 하위 24비트의 조합으로 NIC에 할당되어 있는 전세계 하나밖에 없는 고유한 값이다. 

 

 

 

스위칭

 

이더넷은 '스위치'라는 네트워크 기기 중심으로 컴퓨터를 연결하는 '스타형 토폴로지' 연결 형태를 취한다. 

유선 네트웨크의 경우 컴퓨터는 LAN 케이블을 경유하여 스위치에 연결된다.

 

스위치는 필요한 포트에게만 프레임을 전송해 불필요한 프레임 전송을 막고 이더넷 네트워크의 통신 효율을 높여준다. 

 

스위칭 과정

프레임을 받을 때마다 프레임이 들어온 포트 번호화 출발지 MAC주소 정보를 MAC 주소 테이블(LAN 포트 번호와 출발지 MAC 주소로 이루어 짐)에 기록한다.

-> 목적지 MAC 주소 정보가 MAC 주소 테이블에 없을 경우 모든 포트에게 프레임의 복사본을 송신하여 해당되는 컴퓨터에만 프레임을 수취하고 그 이외의 컴퓨터는 프레임을 파기한다.

-> 일정 기간이 경과할 동안 사용하지 않은 정보는 삭제된다.   

 

 

 

IP와 IP주소

IP(Internet Protocol) : 제 4 계층에서 받은 데이터(세그먼트)에 'IP 헤더'(목적지를 나타내는 택배 전표 같은 것) 를 붙여 패킷을 만든다.

IP는 IP주소로 컴퓨터를 식별한다.

 

IP 주소

  • 32비트로 된 식별번호. 8비트마다 점(.)으로 구분되어 10진수로 표기한다. 점으로 구분 된 그룹을 옥텟이라고 부른다. 처음부터 '제 1옥텟', '제 2옥텟' 순으로 부른다. ex) 172.16.1.1
  • 단독으로 사용하는 것이 아니라 서브넷 마스크와 함께 사용된다. 
  • 서브넷 마스크로 분할된 '네트워크'부와 '호스트부'로 구성되어 있으며 네트워크부는 네트워크 자체를 호스트부는 해당 네트워크에 연결되어 있는 단말을 나타내고 있다.  

 

서브넷 마스크

  • 32비트로 된 값으로 IP주소의 네트워크부와 호스트부를 구분하는 표식같은 것으로 '1'이 네트워크부를 '0' 이 호스트부를 나타낸다. 
  • '10진수 표기'와 'CIDR 표기'라는 2종류의 표기 방법이 있다. 
    • 10진수 표기: 32비트를 8비트씩 4개의 그룹으로 나눈 후 10진수로 변환하려 점으로 구분해서 표기 ex) 172.16.1.1 255.255.0.0
    • CIDR 표기: IP 주소 다음에 슬래시와 '1'의 개수로 표기 ex) 172.16.1.1/16

 

IP주소는 0.0.0.0~255.255.255.255 까지 있는데 사용 용도나 장소에 따라 분류된다. 

  • 사용 용도에 따른 분류: 용도에 따라 클래스 A 부터 클래스 E까지 5개의 주소로 나눌 수 있지만 일반적으로 클래스 A 부터 클래스 C까지 사용하고 D,E는 특수한 용도로만 사용되어 일반적으로는 사용되지 않는다. 클래스 차이는 규격의 차이이고 A-> E순으로 규격이 작아진다. 주소 클래스는 IP 주소의 32비트 중 맨 처음 1 ~ 4비트로 분류하여 맨 처음 비트에 따라 주소의 범위가 정해진다.   
  • 사용 장소에 따른 분류: 장소에 따라 ICANN에서 관리하는 고유한 IP주소인 '글로벌 IP 주소'와 조직이나 가정에서 자유롭게 할당이 가능한 '프라이빗 IP 주소'로 나눌 수 있다. 프라이빗 IP 주소는 클래스별로 정해진 범위를 사용할 수 있다.  

  

 

 

라우팅

라우터: 이더넷으로 만든 네트워크와 네트워크를 연결 할 때 사용하는 네트워트 기기.

라우팅(경로 설정): 라우터가 수행하는 패킷 전송.

라우팅 테이블: 목적지 네트워크와 목적지로 가기위해 보내야 할 곳의 IP주소(넥스트 홉)로 구성.

 

라우팅 과정 

라우터가 패킷을 받으면 -> 해당 패킷의 목적지 IP주소와 미리 만들어 놓은 라우팅 테이블의 목적지 네트워크를 대조 -> 목적지 IP주소가 목적지 네트워크에 있으면 넥스트 홉의 IP로 보냄, 없으면 파기

 

라우팅 테이블 작성 방법

  • 정적 라우팅:
    • 수동으로 테이블 작성.
    • 넥스트 홉을 하나하나 설정해서 알기 쉽고 관리하기 쉬워 소규모 네트워크 환경에서 주소 사용.
  • 동적라우팅:
    • 인접하는 라우터끼리 라우팅 정보를 교환해서 라우팅테이블을 만듦.
    • 네트워크 환경 변화에 대처가 쉬워 중간규모부터 대규모 네트워크 환경에서 사용.

 

 

 

ARP(Address Resolution Protocol)

  • MAC주소: 컴퓨터 NIC에 새겨져 있는 물리적 주소, NIC를 경유할 때마다 바뀜.
  • IP 주소: OS에 설정하는 논리적 주소,  출발지부터 목적지까지 바뀌지 않음.

ARP는 IP 주소와 MAC 주소를 대응시키는 다리 역할이다.  

컴퓨터는 제 3계층에서 받은 패킷을 프레임으로 만들어 케이블에 흘려보내야 하는게 이때 자신의 MAC 주소로는 출발지의 주소는 알 수 있지만(OS가 자동 설정한다) 목적지의 MAC주소는 알지 못하기 때문에 이 때 ARP를 이용해 IP주소로부터 MAC주소를 구해야 한다(ARP에서 얻은 값을 OS가 자동 설정한다).

 

ARP의 처리 흐름

패킷을 받으면 패킷의 목적지 IP를 확인한다.

-> ARP에서 조회하여 응답결과를 ARP 테이블에 등록하고 그것을 바탕으로 프레임을 만든다.

-> 만약 다른 네트워크의 것이라면 기본 게이트웨이의 MAC 주소를 ARP에서 조회하고 동일하게 처리한다.

 

*기본 게이트웨이: 자신 이외의 네트워크(자신이 모르는 네트워크의 목적지 IP 주소)로 갈 때 사용하는 출구가 되는 IP주소. 방화벽이나 라우터의 IP주소일 경우가 많다.     

 

*브로드캐스트: 통일한 네트워크에 있는 모든 컴퓨터에 대한 통신, ARP 리퀘스트는 브로드캐스트로 송신된다.

 

 

 

TCP와 UDP

제 4계층에서 '신뢰성'과 '신속성'으로 구분하여 사용한다.

 

  • TCP(Transmission Control Protocol): 애플리케이션 데이터에 TCP 헤더를 추가해 TCP 세그먼트를 만든다. 
    • 데이터 송신할 때마다 확인 응답을 주고받는 절차가 있어 신뢰성이 올라간다. ( 웹,메일, 파일 공유 등)
  • UDP (User Datagram Protocol):  애플리케이션 데이터에 UDP 헤더를 추가해서 UDP 데이터그램을 만든다.
    • 신뢰성은 없지만 신속성이 올라간다. ( VoIP(IP 전화) 등 )

 

TCP와 UDP는 포트 번호를 이용해 컴퓨터 안에 어떤 서비스에게 데이터를 전달할지를 식별한다. 

 

 

 

 

 

 

포트 번호

컴퓨터 안에서 작동하는 애플리케이션을 식별하기 위해 사용되는 숫자

  • 0~1023 :  잘 알려진 포트 (well-known port) - 일반적인 서버 소프트웨어에서 사용
  • 1024~49151: 등록된 포트(registered port) - 제조업체의 독자적 서버 소프트웨어에서 사용
  • 49152~65535: 동적 포트 (dynamic port) - 클라이언트 측에서 랜덤사용

클라이언트에서 서버로 연결(리퀘스트)

출발지 포트번호는 랜덤한 동적 포트로, 도착지 포트번호는 웹 서비스를 나타내는 '80' 설정후 캡슐화 ->  웹서버에서 캡슐 해제화 후 처리를 수행 후 응답 데이터를 만든다. 

 

서버에서 클라이언트로 연결(리스폰스)

출발지 포트번호는 웹 서비스를 나타내는 '80' 으로, 도착지 포트번호는 받은 세그먼트의 출발지 포트 번호로 설정후 캡슐화 ->  클라이언트에서 캡슐 해제화 후 목적지 포트번호를 체크한다를 만든다. 

 

 

 

 

 

NAT와 NAPT

프라이빗 IP주소를 글로벌 IP주소로 변환하는 기술

 

  • NAT(Network Address Translation) : 프라이빗 IP 주소와 글로벌 IP 주소를  일대일로 변환한다. 
    • (LAN -> 인터넷 : 출발지 IP 주소 변환, 인터넷 -> LAN : 목적지 IP 주소 변환)
  • NAPT(Network Address Port Translation) : 프라이빗 IP 주소와 글로벌 IP 주소를 n대 1로 변환한다. 하나의 글로벌 IP주소에 대해 여러개의 프라이빗 IP 주소를 변환할 수 있다.
    • (IP주소 뿐만 아니라 포트 번호도 함께 변환) 
    • IP주소 포트번호의 변환 정보를 기억해 두고 있다가 서버로부터 응답이 돌아오면 변환정보를 바탕으로 출발지의 클라이언트에게 돌려준다.

 

 

 

 

'웹개발 > CS' 카테고리의 다른 글

[server] 서버 장애 보호  (0) 2021.06.21
[server] 공개 서버의 기본  (0) 2021.06.21
[server] 사내 서버의 기본  (0) 2021.06.17
[server] 서버 준비하기  (0) 2021.06.16
[server] 서버 기초 지식 정리  (0) 2021.06.15