ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 외워서 끝내는 네트워크 핵심이론 - 기초
    네트워크/외워서 끝내는 네트워크 핵심이론 2024. 4. 17. 19:37

    수강에 앞서

    1. bit, byte 등 정보 표현의 단위를 알고 있다.
    2. 1byte는 8bit임을 알고 있다.
    3. bit단위 논리연산을 할 수 있다.
    4. 2진수를 16진수로 변환할 수 있다.
    5. 1024MB가 1GB임을 알고 있다.
    6. Process와 Program의 차이를 알고 있다.
    7. OSI 7 layer라는 말을 알고 있다.
    8. 범용 운영체제는 User mode와 Kernel mode가 존재한다는 것을 알고 있다.
    9. Buffer의 의미를 알고 있다.
    10. 개념(Abstraction) 과 구현(Implementation)의 차이를 안다.

     

     

    Layer와 Layered 구조

    - 존립이 의존적이다.

        · A가 존재하기 위해서는 B가 있어야 한다.

     

     

    네트워크와 네트워킹 그리고 개념

    Network Networking
    관계 상호작용

     

     

    User mode와 Kernel mode

    S/W
    (
    Logical
    [Virtual]
    )
    User mode (app) - Socket : TCP/IP 추상화 시킨 인터페이스 파일
        · 프로세스가 소켓을 열어준다.
    - 프로세스 수준으로 설명이 된다.
    - Application (L7)
    - L6
    - Session(L5)
    Kernel mode (OS) TCP Transport ( L4 )
    IP Network ( L3 )
    Driver Data Link ( L2 )
    + Pysical ( L1 )
    H/W
    (Physical)
    - NIC (Network Interface Card) Physical ( L1 )

     


    Internet 기반 네트워크 입문

    OSI 7 layer와 식별자

    구분 DOD OSI 7 Layer ** 식별자 **
    S/W
    (Logical)
    Application L7 Application HTTP  
    -    
    L5 Session SSL(TLS)  
    host to host L4 Transport TCP, UDP - Port 번호
        · 인터페이스, 서비스, 프로세스 식별자
    Internet L3 Network Internet - IP 주소
        · IPv4 : 32bit = 8bit * 4
        · host를 식별
    H/W
    (Physical)
    Network
    Access
    L2 Data Link Ethernet - MAC 주소
        · 48bit 의 주소체계
        · NIC를 식별하는 역할
    -    

     

    $ipconfig -all

    - 물리적 주소 : Mac 주소 (48비트)

     

     

    Host는 이렇게 외우자

    Host란? - Computer + Network
    - End-point와 switch 로 이루어진다.
    Switch - Network 그 자체를 이루는 host (Infra)

    - Ex) Router, IPS, Tab, Aggregation
    End-point - Network 이용 주체

    - Ex) Client, Server, Peer
        · 단말기 역할에 대한 분류
        · Peer는 내가 서비스 소비자이자 제공자이다.

     

     

    스위치가 하는 일과 비용

    - Packet이 목적지로 이동하면서 Switch를 만나는데 

        · IP주소로 Switch 한다면 NetWork(L3) Switch라고 한다.

        · 이런 L3 Switch를 Router라고 부른다.

        · 만약 Mac 주소로 스위칭한다면 L2 Switch 라고 부른다.

    비유
    자동차 패킷
    고속도로 인터넷
    교차로 Router
    이정표 Routing Table
    교차로에서의 비용
    (비용이 낮은 쪽으로 이동)
    Matrie 값

     


    L2 수준에서 외울 것들

    NIC, L2 Frame, LAN 카드 그리고 MAC 주소

    NIC - NIC(Network Interface Card)는 흔히 LAN(Local Area Network) 카드이다.
    - 유/무선 NIC이 있지만 굳이 구별하지 않고  NIC이라고 할 떄가 많다.
    - NIC은 H/W이며 MAC주소를 갖는다.

    - 하드웨어 하나당 여러 개의 인터페이스(NIC)을 가질 수 있다.
    Frame - L2수준에서의 데이터 단위

     

     

    L2 스위치에 대해서

    L2 Access switch - End-point( 랜선, PC )와 직접 연결되는 스위치
    - MAC주소를 근거로 스위칭

    - 케이블 연결 여부 용어
        · Link-up : 연결이 잘되었다.
        · Link-down : 물리적으로 케이블을 끊어버리거나 분리
    Uplink - 상위 계층(L3 ~ )으로 나아간다.
    L2 Distribution switch - 쉽게 생각하면 L2 Access 스위치를 위한 스위치
    - VLAN(Virtual LAN) 기능을 제공하는 것이 일반적

     

     

    LAN과 WAN의 경계 그리고 Broadcast

    Broadcast - Broadcast 범위를 생각해보자
        · Broadcast는 효율이 안좋기에 최소화시켜야 한다.
    - Broadcast 주소라는 매우 특별한 주소가 존재한다. (MAC, IP 모두 존재)
    - 논리적인 것이지 아니면 물리적인 것인지로 구분하는 것도 방법이다.
    - 일단 MAN(Metropolitan Area Network)은 제외하자.
    네트워크 책을 읽을 때의 TIP! - 책을 볼 때 H/W(물리적인 영역)와 LAN의 영역이 같다고 생각하면 편하다. ( 정답은 아니다! )

    - Internet 부분(논리적인 영역)은 WAN의 영역으로 생각하자

     

    * CPU를 S/W로 구현한다면?! : Virtual Machine


    L3 수준에서 외울 것들

    IPv4 주소의 기본 구조

    IPv4 - 32bit = 8bit * 4
    - 2^8 = 256 가지 수 ( 0 ~ 255 )



    - Network ID와 Host ID로 구성된다.
        · Network ID는 동네  주소와 비슷한 개념이다.
        · Host ID가 동네주소의 정확한 주소

     

     

    L3 IP Packet으로 외워라

    L3 Packet - 단위 데이터
     
    - Packet이라는 말은 L3 IP Packet으로 외워라
    - Header와 Payload로 나뉘며 이는 상대적인 분류이다.
    - 최대 크기는 MTU
        · 1500bytes = 1.4KB
    WireShark - Network Analyer, Network Sniffer

     

     

    Encapsulation과 Decapsulation

    L2 Frame
    Header
    (L2)
    Payload #1
    (L3 IP Packet)
    Header
    (L3)
    Payload #2
    (L4 TCP Segment)
    Header
    (L4)
    Payload #3

     

     

    패킷의 생성과 전달

    Process 철수(송신자) & 영희(수신자)
    Packet 택배
    Gateway 택배 기사
    host 집 (IPv4를 보고 찾아옴)
    Port 번호 택배에 나와있는 이름
    S/W User mode Process  
    Socket - 파일의 일종
    - Kernel mode Protocol을 추상화
        · User mode Process에 접근할 수 있게
    Kernel mode TCP - Data 앞에 TCP 헤더를 붙여 Segment를 만든다.
    IP - TCP 헤더 앞에 IP 헤더를 붙인다.
    Driver - Frame(Ethernet) 헤더를 붙인다.
    H/W      

     

     

    계층별 데이터 단위

    계층 데이터 단위
    Socket Stream
        · 시작은 있지만, 끝이라고 정하는 것은 정할 수 없다.
        · 끝은 process 수준에서 정의하기 떄문에
        · 데이터 단위보다는 데이터 덩어리에 가깝다.

    - Segment와 Packet의 단위를 넘어가면 잘라서 분할한다.
    TCP Segment
        · 단위 : MSS (1460bytes)

    - 분할 : Stream을 Segment 단위를 자른다.
    IP Packet
        · 단위 : MTU (1500bytes)
    L1 ~ L2 Frame

     

     

    [※중요] 이해하면 인생이 바뀌는 TCP/IP 송·수신구조

    서론 - Process도 Buffer라는 저장 공간 존재
        · send/receive (입출력)

    - Socket은 File이다
        · I/O(입출력)이 일어난다.
        · attach된 Buffer 공간이 있는 법이다.
    송신
    (Encapsulation)
    - HDD, SSD의 파일 정보(block)를 Process Buffer 공간으로이동 (읽어온다 - Copy)
        · 파일을 Buffer에 한번에 올릴 수도 있고
        · 쪼개서 올릴 수도 있다.

    - Process Buffer 공간에서 Socket Buffer 공간으로 copy가 이뤄진다.
        · Stream 형태의 데이터

    - TCP/IP로 가면서 Socket Buffer 공간의 데이터가 분해
        · Stream 형태의 데이터 → Segment(L4) → Packet(L3)

    - L2에서 Frame이라는 데이터 단위 변경 후 목적지로 이동
    수신
    (Decapsulation)
    - L2에서 Frame을 받아 Packet을 IP(L3)로 전달

    - TCP/IP가 Socket으로 전달
        · Packet → Segment → Socket I/O Buffer로 전달

    - Process로 전달 ( receive )
        · Socket I/O Buffer  Process Buffer

    * 속도차
        · Socket I/O Buffer은 채워 나가고
        · Process Buffer는 비워 나간다.
    * TCP는 패킷을 잘 받았다는 피드백(ACK + Socket Buffer의 여유공간의 크기)를 전달한다.
        · 송신측은 대기 ( Wait for ACK )
        · 송신측에서 ACK를 받으면 다시 데이터를 보낸다. ( 이 과정을 반복한다. )
    Network 장애 1. Loss (유실)
        · 데이터 유실
        · Network 문제

    2. Re-transmission
        · 데이터를 보내도 응답이 없을 경우에 다시 보냄
        · ACK Duplicate
        · Network 문제일 수도 있고 End-point 간의 합이 안 맞아서 문제 발생

    3. Out of Order
        · 데이터가 순서대로 오지 않을 경우
        · Network 문제

    4. Zero window
        · Window Size : Socket I/O Buffer의 여유공간
        · 네트워크 송수신 속도 > 프로세스의 데이터 처리 속도
        · End-point(Application) 문제 

     

     

    IP 헤더 방식

    IPv4 형식 - 단위 : MTU
        · 1500byte

    - Header
        · 20byte

    - Payload
        · 1480byte
    Total length - 패킷 길이
        · 2^16 : 64KB
    단편화 - 위 그림의 2번째 행과 관련되어 있다.
    - 패킷을 짤라할 경우 사용
    TTL - 이 값이 0이 되면 패킷은 버려진다.
    Protocol - Payload안에 Header가 올 때 Header를 어떻게 해석을 해야하는지 나온다.
    Header checksum - 패킷이 송수신 과정에서 손상여부를 확인하기 위한 부분 (유효성 검사)

     

    * 16진수와 친해져야 한다. ( WireShark를 사용하기 위해! )

     

     

    서브넷 마스크와 CIDR

    서브넷 마스크 - 서브넷 마스크를 기준으로 Network ID와 Host ID를 잘라낸다.

    - 주소에서 서브넷 마스크를 가지고 비트 단위로 AND 연산으로 Network ID가 나와 일치여부 확인
    - 마스크연산 : AND연산으로 Host ID는 잘라냄 
        · Network ID가 같다면 '우리 네트워크로 오는 패킷'으로 판단
    클래스 - Network ID를 얼마만큼 자를 것인가?

    - A class : Network ID(8bit) + Host ID(24bit) 
    - B class : Network ID(16bit) + Host ID(16bit) 
    - C class : Network ID(24bit) + Host ID(8bit) 

    - IP를 class 별로 잘라내기 위해 서브넷 마스크가 사용되었다.

    - 컴퓨터가 좋아짐에 따라 클래스 개념을 쓰지 않는다.
    서브 매핑 - C class에서 Host ID를 짤라 Network ID로 연결시켜준다.
    CIDR
    (Classless
    Inter-Domain
    Routing)
    - 클래스 개념 대신에 CIDR 방식을 사용

     
    - /24 : 24비트를 Network ID라고 하겠다.

     

     

    Broadcast IP 주소

    Broadcast IP - 호스트 주소를 다 1로 채운다면 방송 주소로 쓰인다.

    - 하나의 지점을 정해서 가면 유니캐스트 이다.
    - 브로드캐스트면 전체적으로 다 전달한다.
        · 효율이 떨어진다.
        · 브로드캐스트 도달 범위를 일정 수준에서 통제해야 한다.
        · 브로드캐스트는 안할수록 좋다.
    다음 두 가지 주소는 고정이다. * Host IP : 192.168.0.0
    * Broadcast IP : 192.168.0.255

    - 실제로 쓸 수 있는 호스트 주소는 254개 뿐이다.
    - 게이트 웨이 등 네트워크 장비를 빼면 PC가 실질적으로 사용할 수 있는 건 250개 정도가 된다.

     

     

    Host 자신을 가르키는 IP주소

    127.0.0.1
    (Loopback Address)
    - 호스트 자신을 가르키는 IP주소
    - TCP/IP 계층 내에서 이동한다.
        · 그 밑 계층으로 패킷이 내려가지 않는다.
    네트워크 접속 & 접근 - 하나의 프로세스로 작동한다.
    - 인터넷을 사용하는 것은 컴퓨터가 아니고 정확히는 이 컴퓨터에서 실행 중인 어떤 프로세스가 인터넷을 사용한다.
    IPC
    (Inter Process
    Communication)
    - 소켓을 이용해서 내가 나한테 접속하는 방식으로 프로세스 간의 통신이 이뤄지도록 지원할 수 있다.
        · 루프백 어드레스를 활용한다!

     

     

    TTL과 단편화

    인터넷이란? - 라우터의 집합체라고 할 수 있는 논리 네트워크이다.
    - 인터넷이라는 네트워크를 이루는 핵심적인 구성요소 : 라우터 + DNS
    TTL과 단편화 - Time To Live 는 패킷이 도착하지 못하였을 때 패기시키는 역할
    - 단편화는 MTU크기 차이로 발생한다.
        · MTU는 보통 1500byte 정도 한다.
        · 가끔 MTU가 1400byte 이면 1500byte를 반으로 잘라서 전달해야한다.
        · 단편화는 작은 패킷을 또 자르는 역할을 한다.

    - 보통 단편의 조립은 수신측 Host(end-point)에서 이루어진다.
    MTU가
    1400byte일때
    - 단편화는 좋은 현상이 아니다.
    - 게다가 요즘은 MTU가 보통 1500byte정도이다.

    그럼 언제 MTU가 떨어질까?
    - IPSce VPN이 적용되어 터널링이 적용되면 MTU 사이즈가 줄어든다.
        · 단편화 발생

     

     

    인터넷 설정 자동화를 위한 DHCP

    인터넷 사용 전에
    해야 할 설정
    L3의 환경 세팅
    - IP주소
        · ISP(Internet Service Provider) : IP주소 제공
    - Subnet mask
    - Gateway IP 주소

    - DNS 주소

    * 해당 설정들을 자동으로 사용하겠다 : DHCP를 활용하겠다!
    DHCP - DHCP(Dynamic Host Configuration Protocol) 체계는 주소를 할당하는 서버와 할당 받으려는 클라이언트로 구성된다.
        · IT에서 Dynamic이라는 말은 런타임과 같다.
    - 복잡한 인터넷 설정을 자동으로 해준다고 볼 수 있는데 핵심은 내가 사용할 IP주소를 서버가 알려준다는 것에 있다.

    - DHCP Server는 Pool 가지고 있어 그 Pool 안에 IP Address들이 담겨있다.
    - DHCP Server는 Boardcast 도메인에 묶여 있어야 한다.

     

     

    ARP

    ARP
    (Address Resolution
    Protocol)
    - ARP는 IP주소로 MAC주소를 알아내려 할 때 활용된다.
    - 보통의 경우 PC를 부팅하면 Gateway의 MAC주소를 찾아내기 위해 ARP Request가 발생하며 이에 대응하는 Reply로 MAC 주소를 알 수 있다.

    - Broadcast로 ARP Req가 전송된다.
        · 이에 대응하는 Reply 전송
    - 네이버 같은 주소에 접속할 때 목적지 MAC Address는 Gateway MAC 주소가 잡힌다.
        · 그럼 게이트 웨이는 IP패킷을 보고 움직인다.
    - ARP도 캐싱된다.
    전체적인 정리 - 컴퓨터 전원 ON & IP 주소 자동 설정 시

    1. DHCP 서버에서 IP주소, Subnet mask, Gateway IP 주소 설정
    2. ARP Req를 보내서 Gateway MAC 주소 확인

     

     

    Ping과 RTT

    Ping과 RTT - Ping 유틸리티(그냥 프로그램)는 특정 Host에 대한 RTT(Round Trip Time)을 측정할 목적으로 사용된다.
    - ICMP 프로토콜을 이용한다.
    - DoS(Denial of Service) 공격용으로 악용되기도 한다.

    - RTT는 거리에 비례하는 것이 아니라 네트워크 속도가 중요하다.

     

     


    L4 수준 대표주자 TCP와 UDP

    TCP와 UDP 개요

    TCP - TCP에만 연결(Connection, Session) 개념이 있다.
    - 연결은 결과적으로 순서번호로 구현된다.
    - 연결은 '상태(전이)' 개념을 동반한다.
    - TCP는 배려남, UDP는 (배려가 없는) 나쁜 남자에 비유할 수 있다.
    TCP 연결 Client
    -  Process가 Sokcet을 Open
        · PIP가 TCP Port 번호를 부여

    Server
    - 연결대기(Listen)
    - Listen 상태의 소켓을 열어서 연결 대기

    * 일반적으로 TCP의 Port 번호는 80번
    * 상대방의 IP주소와 Port번호를 알아야지 연결이라는 개념을 시도할 수 있다.

     

     

    TCP 연결과정(3-way handshaking)

    3-way handshaking - 통신 단위는 Segment, 단순 연결 목적(IP와 TCP로 이뤄져있다.)

    - 정책 교환 : Seq 번호 교환, MSS(Maximum Segment Size)
    - 연결이란 관리적 정보, 프로토콜이 규정하는 정보를 교환하는 것이다.

     

     

    TCP 연결종료 및 상태변화


    4-way handshaking - 연결을 하자는 것도 끊는 것도 Client가 일반적이다.

    - TIME_WAIT가 발생한다는 것은 연결을 끊자고 한 주체이다.
        · 연결 끊기 최종완료 전에 발생한다.

    - 서버가 연결을 끊도록 하는 것이 아니라, 클라이언트가 끊도록 유도해야한다.
        · 그래야 서버 쪽에서 TIME_WAIT가 발생하지 않는다.
        · 소켓은 제한된 갯수가 있는데 TIME_WAIT 시간동안 소켓이 낭비가 된다.

     

     

    TCP, UDP 헤더형식과 게임서버 특징

    TCP Header 형식 보류
    UDP Header 형식 보류
    게임서버 - TCP의 경우 하향 평준화가 된다.

    - UDP를 활용해서 TCP가 가지고 있는 혼잡제어를 직접 구현

     

     

    TCP '연결'이라는 착각

    파일 다운로드 중 LAN 케이블을
    분리했다가 다시 연결하면
    TCP 연결은 어떻게 될까?
    - TCP 연결은 유지된다.

    - 하트비트 : 소켓서버에서 TCP가 연결되어 있는지 계속 확인하는 과정
    TCP 연결이라는 착각 - 재전송 타이머의 기본 근사 값은 대략 3초다. 하지만 대부분의 운영체제들은 1초 미만이다.
    - 재전송 타이머 만료 후에도 확인 응답을 받지 못한 경우 세그먼트를 재전송하고 RTO(Retransmission Time-Out) 값은 두 배로 증가한다.
    - 예를 들어 1초 > 2초 > 4초 > 8초 > 16초 간격으로 재전송한다.
    - 보통 최대 5회 재전송을 시도하고 5회 이상 모두 실패할 경우 보통 전송 오류가 발생한다.
    Buffer - 충격 완화 장치

     

     

    TCP 연결과 게임버그

    예시 - 어떤 MMORPG 게임에서 아이템 복제 버그가 발생하였다.
    - 이는 논리적 TCP 연결과 물리적 링크간 차이를 이용한 시간차 공격이라 볼 수 있으며 연결이 사실은 End-point의 주관적 판단에 불과하다는 것을 보여준다.
    TCP의 연결은 보안성이 없다. - 보안성 = 기밀 + 무결 + 가용

     


    웹을 이루는 핵심기술

    한 번에 끝내는 DNS

    DNS - 분산 구조형 데이터베이스
        ·  데이터베이스 시스템(DNS 네임서버)의 분산 구성
        · 데이터의 영역별 구분(Domain Zone) 및 분산관리
        · 도메인의 네임서버 및 도메인 데이터는 해당 관리주체에 의해 독립적으로 관리됨

    - 트리(tree) 구조의 도메인 네임(Domain Name) 체계
        · Damain : 영역, 영토를 의미
        · 도메인 네임의 자율적 생성
        · 생성된 도메인 네임은 언제나 유일(Unique)하도록 네임 체계 구성

    - www.naver.com
        · www : 호스트 네임
        · naver.com : 도메인 네임

    - DNS은 응답할 때 유효시간을 함께 응답한다.
        · 유효기간 내에 요청 시 DNS Cache를 조회
    - PC내 hosts를 조회해 이동
        · hosts파일에 URL과 IP가 기록되어 있다.
    - 공유기가 DNS forwarding을 통해 DNS 기능을 대행해주기도 한다.

     

     

    URL과 URI

    URL과 URI - URL (Uniform Resource Locator)
    - URI (Uniform Resource Identifier)

    - 웹에서의 Resource란 결국 파일이다.
        · HTML을 HTTP를 사용해서 이동시킨다.
        · 이 파일의 저장된 위치를 Resource Locator라고 부른다.

    - URI가 더 큰 개념이다.
    URI 구조 - URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]

    - 더 간단화 : Protocol://Address:Portnumber/Path(or filename)?Parameter=value
        · http://www.test.co.kr/course.do?cmd=search&search_keyword=Test

     

     

    굵고 짧게 살펴보는 HTTP

    HTTP - HTTP는 HTML 문서를 전송받기 위해 만들어진 응용 프로그램 계층 통신 프로토콜이다.
    - 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다.
    - 헤더는 다음과 같이 분류된다.
        · 일반 헤더
        · 요청 헤더
        · 응답 헤더
        · 엔티티 헤더
    - 요청에 사용되는 메서드는 주로 GET, POST이다.
    HTTP 응답코드 - 200 OK
        · 요청이 정상적으로 처리됨
    - 201 Create
        · 요청에 대한 새로운 자원을 생성하는데 성공함
    - 301 Moved permanently
    - 302 Found
    - 400 Bad request
        · HTTP 규약에 맞지 않는 요청
    - 403 Forbidden
        · 권한이 없거나 잘못된 파일 실행 접근시도
    - 404 Not found
    - 500 Internal server error
        · 내부 오류떄문에 요청을 처리할 수 없음
    HTTP method - GET
        · Download
    - POST
        · Upload
    - HEAD
    - TRACE
    - PUT
    - DELETE
    - OPTIONS
    - CONNECT

     

     

    그림 한 장으로 외워서 끝내는 웹 서비스 구조 기본 이론

    웹 서비스 기본 구조 - HTTP는 TCP/IP 연결 후에 이뤄진다.
        · Socket 수준에서 이루어진다. 즉, stream이 사용된다.
        · stream데이터를 segment으로 나눠서 packet으로 만들어 전송

     

     

    WAS와 RESTful API 그리고 JVM

    3-Tier - Web
    - WAS
    - DB
    APM - Application Performance Management
    - DB와 WAS 상태를 모니터링
        · 응답시간 등등

    - ex) Scouter
    JVM - Java Virtual Machine

    - Java를 위해서 소프트웨어로 구현된 CPU
    보안 - IPS
        · 1차 방어 체계
    - SSL
    - WAF(Web Application Firewall)
        · 2차 방어 체계

     

     

     

    댓글

Designed by Tistory.