[W@S 2023] 네트워크 기초(개정판) - 따라하면서 배우는 IT

cybergangster·2023년 1월 12일
0

미분류

목록 보기
9/10
post-thumbnail

따라學IT 01. 네트워크란 무엇인가? ref.1 ref.2 ref.3

네트워크란 무엇인가?

  • 네트워크란?
    • 노드들이 데이터를 공유할 수 있게 하는 디지털 전기통신망의 하나
    • 분산되어 있는 컴퓨터를 통신망으로 연결한 것
    • 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터를 교환
      • 노드: 네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말
  • 인터넷이란?
    • 문서, 그림 영상과 같은 여러가지 데이터를 공유하도록 구성된 세상에서 가장 큰 전세계를 연결하는 네트워크
    • 흔히 www를 인터넷으로 착각하는 경우가 많은데 www는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것
    • 네트워크 안에 인터넷 포함, 네트워크는 통신망, 인터넷은 여러개의 통신망 중에서 가장 큰 네트워크 통신망
  • 네트워크 분류 - 크기
    • LAN: Local Area Network, 하나의 장비(스위치)에 연결되어 있는 여러 시스템이 속한 네트워크, 근거리 통신망
    • WAN: Wide Area Network, 하나 이상의 LAN으로 구성된 네트워크, 멀리 있는 지역을 한데 묶은 네트워크, 가까운 지역끼리 묶인 LAN과 LAN을 다시 하나로 묶은 것
    • PAN: Personal Area Network, 개인이 사용하는 작은 단위의 네트워크
    • MAN: Metropolice Area Network, 하나의 도시 단위의 네트워크
  • 네트워크 분류 - 구성 방법
    • 스타형: 중앙에 있는 네트워크 장비를 통해 모두 연결된 형태, ex) 공유기, LAN 대역의 네트워크 장비들을 연결시킬 때(하나의 LAN 대역을 만들 때), 중앙 장비에 모든 노드가 연결된 성(star)형
      • 중앙의 장비가 고장나면 모든 시스템들이 통신 불가
      • 일반적으로 스위치 장비를 통해 2계층, LAN 대역을 구성
    • 망형: 모든 시스템들이 각각 개별적으로 연결됨, 비용이 많이 듦, 여러 노드들이 서로 그물처럼 연결된 Mesh형
      • 특정 장비가 고장나도 다른 장비끼리 통신하는데 문제 없음
      • 일반적으로 라우터 장비를 통해 3계층, WAN 대역을 구성
    • 버스형: 하나의 선을 통해 여러 시스템을 연결
    • 트리형: 시스템을 여러 계층으로 나눠서 연결
    • 링형: 인접 시스템을 1:1로 연결
    • 혼합형: 여러 형태를 조합하여 구성한 형태, 실제 인터넷은 여러 형태를 혼합한 형태인 혼합형
  • 네트워크 통신 방식
    • 유니캐스트: 1:1 통신을 할 때 사용하는 방식, 특정 대상과 통신을 할 때 사용하는 방식
    • 멀티캐스트: 1:n 특정 그룹과 통신하는 방식
    • 브로드캐스트: 1:n 네트워크 내의 모든 시스템과 통신하는 방식, 불특정 다수와 통신
  • 네트워크 프로토콜
    • 네트워크를 통해 시스템들끼리 통신을 효율적으로 하기 위한 여러 가지 규칙, 약속, 양식, 프로토콜은 일종의 약속, 양식, 네트워크에서 노드와 노드가 통신할 때 어떤 노드가 어느 노드에게 어떤 데이터를 어떻게 보내는지 작성하기 위한 양식, 각 프로토콜도 해당 프로토콜만의 양식이 있음
      • Ethernet(2계층): MAC 주소, 가까운 곳과 연락할 때
      • ARP, IPv4, ICMP(3계층): IP 주소, 멀리 있는 곳과 연락할 때
      • TCP, UDP(4계층): 포트번호, 여러가지 프로그램으로 연락할 때
    • 여러가지 프로토콜: 여러 프로토콜들로 캡슐화 된 패킷

실습1(tracert)

  • 구글과 나는 어떻게 연결되어 있는지 확인해보기
    • cmd에서 tracert 8.8.8.8(구글 DNS 서버의 IP 주소) 명령어로 확인
    • 요청 시간이 만료되었습니다.(IP 주소 비공개, 추적 불가능)
    • 여러 개의 네트워크 대역들을 넘어갈 때마다 표시
    • 지구 반대편에 있는 구글 DNS 서버까지 찾아갈 때 n개의 네트워크 대역을 거쳐감

실습2(Wireshark)

  • wireshark: 실제 컴퓨터를 가지고 네트워크 통신을 할 때 네트워크 프로토콜을 캡처해서, 어떤 프로토콜을 사용하고 보냈고 받았는지 보여주는 프로그램
  • wireshark 설치 프로그램을 이용해서 설치, 설치 후 실행
    • Npcap(wireshark가 사용하는 라이브러리) 설치 해제
    • WinPcap 설치(실행했을 때 인터페이스가 안보이면 winPcap 설치)

실습3(프로토콜 직접 확인해보기)

  • wireshark를 이용해서 프로토콜 캡처 후 확인해보기
    • Hypertext Transfer Protocol: html, js, css 파일 받아와 웹 브라우저에서 보여줌 // 네이버
    • Internet Protocol Version 4: 나와 네이버의 통신(장거리 통신)
    • Ethernet ~: 특정한 컴퓨터 찾아가기, 가까운 곳 통신할 때
    • Transmission Control Protocol: 크롬이라는 프로그램이 네이버에 있는 프로그램(웹 서버 프로그램)과 연결
  • 프로토콜은 위와 같이 각각의 용도에 맞게 여러 개/가지들이 같이 사용이 되고, 이렇게 같이 사용되는 모습을 encapsulation이라 함

따라學IT 02. 네트워크의 기준! 네트워크 모델

  • 네트워크 계층 모델

    • TCP/IP 모델
      - 1960년대 말 미국방성의 연구에서 시작되어 1980년대 초 프로토콜 모델로 공개, 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신 규약(프로토콜)의 모음
      - 4계층으로 이루어져 있음
      - 4, 응용
      - 3, 전송
      - 2, 네트워크
      - 1, 네트워크 인터페이스

    • OSI(Open Systems Interconnection Reference Model) 7계층

      • 1984년 네트워크 통신을 체계적으로 다루는 ISO에서 표준으로 지정한 모델, 데이터를 주고받을 때 데이터 자체의 흐름을 각 구간별로 나눠 놓은 것
      • 7계층으로 이루어져 있음
        • 7, 응용 : (프로토콜) HTTP, SMTP, IMAP, POP, SNMP, FTP, TELNET, SSH
        • 6, 표현 : (프로토콜) SMB, AFP, XDR
        • 5, 세션 : (프로토콜) NetBIOS
        • 4, 전송 : (프로토콜) TCP, UDP, SPX
        • 3, 네트워크 : (프로토콜) IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF, RIP, IPX, DDP
        • 2, 데이터 링크 : (프로토콜) 이더넷, 토큰링, PPP, HDLC, 프레임 릴레이, ISDN, ATM, 무선랜, FDDI
        • 1, 물리 : (프로토콜) 전선, 전파, 광섬유, 동축케이블, 도파관, PSTN, 리피터, DSU, CSU, 모델
  • TCP/IP 모델 vs OSI 7계층

    • 공통점:
      • 계층적 네트워크 모델
      • 계층간 역할 정의
    • 차이점:
      • 계층의 수 차이
      • OSI는 역할 기반(논리적으로 기능들을 상세히 분리), TCP/IP는 프로토콜 기반
      • OSI는 통신 전반에 대한 표준, TCP/IP는 데이터 전송기술 특화
      • 시스템의 유연성: OSI는 복잡한 통신망의 상황변환에 유연하게 적응이 어려운 반변, TCP/IP는 하나의 계층에 네트워크 환경에 따라 여러개의 프로토콜을 이용하는 유연성을 가짐
      • 서비스 특성: OSI는 연결형(Connection Oriented) 서비스 위주, TCP/IP는 연결형과 비연결성(Connectless) 서비스 둘 다 제공
  • 네트워크를 통해 전달되는 데이터, 패킷

    • 패킷이란?
      • 패킷이란 네트워크 상에서 전달되는 데이터를 통칭하는 말로 네트워크에서 전달하는 데이터의 형식화된 블록
      • 패킷은 제어 정보와 사용자 데이터로 이루어지며 사용자 데이터는 페이로드라고도 함
      • 패킷 간에도 순서가 있음
  • 네트워크 프로토콜(패킷) 구조

    • 헤더:
    • 페이로드: 프로토콜 상위 계층에서 내려온 데이터, 실질적으로 내가 보내려고 하는 데이터
    • 풋터: 테일이라고도 부르며, 추가적인 정보를 가진 데이터, 일반적으로 잘 사용하지 않음
      • ex1) HTTP 프로토콜을 페이로드로 하여 TCP라고 하는 헤더를 붙임
      • ex2) ex1)를 페이로드로 하여 IPv4를 헤더로 붙임
      • ex3) ex2)를 페이로드로 하여 Ethernet를 헤더로 붙임 --> 캡슐화
  • 네트워크 프로토콜 통신방식

    • 캡슐화(encapsulation): 네트워크 통신(보낼 때)을 할 때 높은 계층에서부터 낮은 계층으로 프로토콜들을 생성(붙이는)하는 과정, 여러 프로토콜을 이용해서 최종적으로 보낼 때 패킷을 만드는 과정
    • 디캡슐화(decapsulation): 네트워크 통신(받을 때)을 할 때 낮은 계층에서부터 높은 계층 프로토콜들을 분석(까는)정, 패킷을 받을 때 프로토콜들을 하나씩 확인하면서 데이터를 확인하는 과정
  • 계층별 패킷의 이름 PDU(Protocol Data Unit)

    • 각각의 계층에서 패킷(일반적으로 패킷은 인터넷에서 네트워크 망을 통해 왔다 갔다 하는 네트워크 데이터를 통칭해서 부르는 말)을 부르는 용어가 다름

<참고>

  • OSI 7 계층
    • 7, 응용, 여러가지 서비스를 제공하는 실직적인 프로그램, 사용자 인터페이스
    • 6, 표현, 데이터를 어떤 형식으로 전달할지 정하는 계층, ex) 그림파일(jpeg, png), 압축파일(zip, tar.gz), 일반 텍스트
    • 5, 세션, 논리적인 연결을 정의하는 계층, 네트워크 장치들간의 연결 설정의 유지 동기화 등을 어떻게 수행할지를 정의
    • 4, 전송, 포트주소를 이용해서 통신, 오류 제어(신뢰성 유무), 특정 프로그램 간의 통신(웹 브라우저 and 웹 서버)
    • 3, 네트워크, IP 주소를 이용해서 통신, 전송 경로를 선택하여 어느 경로로 가는 것이 최선인지를 결정, 특정 네트워크를 찾아가는 역할
    • 2, 데이터 링크, MAC 주소를 이용해서 통신, 특정 네트워크에서 특정 PC를 찾아가는 역할
    • 1, 물리, 상위 계층에서 캡슐화된 데이터를 bit 단위로 변경, 전기신호로 전송하고 받은 전기신호를 bit 단위로 해석하는 역할

따라學IT 03. 가까이 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다

  • 2계층

    • 2계층에서 하는 일
      • 2계층의 기능
        • 하나의 네트워크 대역, 즉, 같은 네트워크 상에 존재하는 여러 장비등 중에서 어떤 장비가 어떤 장비에게 보내는 데이터를 전달
        • 추가적으로 오류제어, 흐름제어 수행
        • 2계층 대표적인 장비 - 스위치
      • 2계층의 네트워크 크기
        • 2계층은 하나의 네트워크 대역 LAN에서만 통신할 때 사용
        • 다른 네트워크와 통신할 때는 항상 3계층이 도와주어야 함
        • 3계층의 주소와 3계층의 프로토콜을 이용하여야만 다른 네트워크와 통신이 가능함
  • 2계층에서 사용하는 주소 - MAC 주소

    • MAC 주소
      • 2계층 주소 체계, Media Access Address
      • 물리적인 주소, 하드웨어 장치
      • LAN에서 통신할 때 사용하는 주소
      • (LAN카드=Network Interface Card, NIC)에 부여되어 있는 주소
      • 48bit, 6바이트, (1비트 0 또는 1, 8비트=1바이트)
      • 각각의 NIC마다 전세계 유일한 주소를 가지고 있음
    • MAC 주소 표기 방식
      • 16진수로 표기 (10진수는 0-9로 모든 수를 표현, 16진수는 0-9, A-F로 모든 수를 표현)
      • AA:BB:CC:DD:EE:FF 또는 AA-BB-CC-DD-EE-FF 처럼 1바이트마다 :, -로 구분해서 표기
    • MAC 주소 구성
      • AA:BB:CC : 앞으 3바이트는 OUI(IEEE에서 부여하는 일종의 제조회사 식별 ID), LAN카드(NIC)를 만들고 해당 NIC에 주소를 부여하는 회사의 고유값
      • DD:EE:FF : 뒤의 3바이트는 해당 회사에서 생산되는 제품의 고유번호(제조사에서 부여한 고유번호)
  • 2계층의 프로토콜

    • Ethernet
      • LAN에서 통신할 때 사용하는 Ethernet 프로토콜
      • 14바이트
      • 목적지 주소: 데이터를 전달받을 상대방 시스템의 MAC 주소 6바이트(16진수 12개) // Destination Address
      • 출발지 주소: 데이터를 전달하는 시스템의 MAC 주소 6바이트(16진수 12개) // Source Address
      • 상위 프로토콜 타입: 2바이트, IPv4(0x0800), ARP(0x0806) // Ethernet Type - 프로토콜 타입 // 페이로드(DATA)에 미리 3계층 프로토콜을 미리 알려줌, 전기적 신호로 데이터가 전달되는데, (미리) 상위 프로토콜이 뭔지 알려줌으로써 분석을 용이하게 함
  • 실습1 - 내 PC의 MAC 주소 확인해보기
    - cmd > ipconfig/all

  • 실습2 - Ethernet 프로토콜 캡처
    - Wireshark를 이용해서 프로토콜 캡처 후 확인해보기

  • 실습3- Ethernet 프로토콜 분석
    - 프로토콜의 구조 그림을 함께 보면서 실제 패킷과 비교해보기
    ref.

따라學IT 04. 실제로 컴퓨터끼리는 IP주소를 사용해 데이터를 주고받는다

  • 3계층

    • 3계층의 기능
      • 3계층에서 하는 일
        • 다른 네트워크 대역, 즉 멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어하는 일을 담당
        • 발신에서 착신까지의 패킷의 경로를 제어
        • LAN과 LAN을 연결시켜주는 것, 서로 다른 LAN 대역을 연결시켜 주는 역할
        • 3계층의 대표적인 장비 - 라우터
  • 3계층에서 사용하는 주소 - IP주소

    • IP주소
      • 3계층 주소 체계, Internet Protocol Address Version 4
      • 논리적인 주소
      • 32bit - 4바이트
    • WAN에서 통신할 때 사용하는 IP 주소
      • IPv4 주소 : 현재 PC에 할당된 IP 주소
      • 서브넷 마스크 : IP 주소에 대한 네트워크의 대역을 규정하는 것
      • 게이트웨이 주소 : 외부와 통신할 때 사용하는 네트워크의 출입구
    • IP 주소를 이용해 MAC 주소를 알아오는 ARP 프로토콜

    • IP 주소 표기 방식
      • 10진수로 표기하며 192.168.0.100 다음과 같이 각 필드를 .으로 구분, 각 필드는 0~255까지 올 수 있고 이는 1바이트로 표현할 수 있는 수
      • 0.0.0.0 ~ 255.255.255.255 (2진수 8자리로 표현할 수 있는 숫자까지)
      • 00000000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111
    • IP주소의 종류
      • 네트워크 ID : 해당 네트워크 대역에서 가장 작은 IP주소, 해당 네트워크 대역을 대표하는 IP
      • 브로드캐스트 주소: 해당 네트워크 대역에서 가장 큰 IP주소, 해당 네트워크 대역에 모든 시스템에 통신을 할 때 사용하는 IP
      • 호스트 할당 가능한 주소 : 해당 네트워크 대역에서 가장 작은 IP주소 +1 ~ 해당 네트워크 대역에서 가장 큰 IP주소 -1
      • 게이트웨이 주소 : 해당 네트워크 대역에서 가장 작은 IP주소 +1 or 해당 네트워크 대역에서 가장 큰 IP주소 -1
    • IP주소의 역사
      • IP 주소는 오랜 전부터 지금까지 계속해서 사용해오고 있는 네트워크 통신을 하는데 있어서 굉장히 중요한 주소
      • 하지만 다양한 네트워크 장비가 발전해오면서 IP주소는 점점 부족하게 되었고 이를 해결하기 위한 다양한 방법이 제시됨
      • 그러면서 IP주소는 다음과 같이 점점 발전해옴
      • 클래스풀한 IP주소 -> 클래스리스한 IP주소 -> 사설IP와 공인IP -> IPv6
    • (낭비가 심한) 클래스풀한 IP주소(초창기에 사용)

      A클래스

      • 10진수로 표시 : 0.0.0.0 ~ 127.255.255.255
      • 2진수로 표시 : 0 0000000.00000000.00000000.00000000 ~ 01111111.11111111.11111111.11111111
      • (필드).(필드).(필드).(필드)
      • 첫번째 필드까지는 네트워크 대역을 구분하는 주소 128개, 나머지는 호스트(PC, 2^24개)를 구분

      B클래스

      • 10진수로 표시 : 128.0.0.0 ~ 191.255.255.255
      • 2진수로 표시 : 10 000000.00000000.00000000.00000000 ~ 10111111.11111111.11111111.11111111
      • 두번째 필드까지는 네트워크 대역을 구분하는 주소, 나머지는 호스트(PC)를 구분

      C클래스

      • 10진수로 표시 : 192.0.0.0 ~ 223.255.255.255
      • 2진수로 표시 : 110 00000.00000000.00000000.00000000 ~ 11011111.11111111.11111111.11111111
      • 세번째 필드까지는 네트워크 대역을 구분하는 주소, 나머지는 호스트(PC, 256개)를 구분

      D클래스(멀티캐스트)

      • 10진수로 표시 : 224.0.0.0 ~ 239.255.255.255
      • 2진수로 표시 : 1110
      • 0000.00000000.00000000.00000000 ~ 11101111.11111111.11111111.11111111
      • 멀티캐스트용으로 사용하는 주소

      E클래스(예약)

      • 10진수로 표시 : 240.0.0.0 ~ 255.255.255.255
      • 2진수로 표시 : 11110 000.00000000.00000000.00000000 ~ 11111 111.11111111.11111111.11111111
      • 연구목적으로 사용하지 않는 IP주소
  • (낭비되지 않게 클래스를 나누어 사용하지 않는)클래스리스한 IP주소

    • 서브넷 마스크의 도입(IP 주소와 꼭 함께 쓰임)
      • 클래스풀한 네트워크 대역을 나눠주는데 사용하는 값
      • 어디까지가 네트워크 대역을 구분하는데 사용하고 어디서부터 호스트를 구분하는데 사용하는지 지정
      • 32bit 4바이트
      • 255.255.255.192 -> 11111111.11111111.11111111.11000000
      • 2진수로 표기했을 때 1로 시작, 1과 1사이에는 0이 올 수 없다는 규칙을 가지고 있음
      • ex) 192.168.100.68 255.255.255.192 와 같이 IP주소와 서브넷마스크를 쓰면?
      • 192.168.100.0와 같이 C클래스에 해당하는 네트워크를 192.168.100.0, 192.168.100.64, 192.168.100.128, 192.168.100.192와 같이 4개의 작은 네트워크 대역으로 나눈 것이고 해당 IP 주소는 2번째 네트워크에 해당하는 것이다.
    • 서브넷팅
      • 211.100.10.0/24 네트워크를 각 네트워크 당 60개의 호스트가 사용할 수 있는 네트워크 대역으로 쪼개면? (다시 합치면 슈퍼?넷팅)
      • 11010011.01100100.00001010. 00 000000 211.100.10.0/26
        11010011.01100100.00001010. 01 000000 211.100.10.64/26
        11010011.01100100.00001010. 10 000000 211.100.10.128/26
        11010011.01100100.00001010. 11 000000 211.100.10.192/26
        11111111.11111111.11111111. 11 000000
      • 1) 어떤 서브넷마스크가 효율적인가?

        /26, 255.255.255.192

      • 2) 몇 개의 네트워크 대역으로 나눠지는가?

        4개

      • 3) 하나의 네트워크 대역에 실제로 할당 가능한 호스트의 수는?

        네트워크 ID와 브로드캐스트 주소를 제외한 62개

      • 4) 마지막 네트워크 대역의 네트워크ID는?

        211.100.10.192

      • 5) 첫번째 네트워크 대역의 브로드캐스트 주소는?

        211.100.10.63

      • 6) 두번째 네트워크 대역의 할당 가능한 IP 주소의 범위는?

        211.100.10.65 ~ 211.100.10.127

    • 사설 IP & 공인 IP(+클래스리스 IP => 현재 IPv4 의미)
      • 공인 IP 하나에 새로운 네트워크 대역인 2^32개의 사설 네트워크 대역을 생성
      • 네이버에 '내 IP 주소'치면 나오는 ip는 공인 IP, cmd ipcofig에 나오는 ip는 사설 IP
      • 공인 IP 하나에 0.0.0.0~255.255.255.255의 IP를 생성
      • 사설 IP는 외부 네트워크 대역에서는 보이지 않음
      • 사설 IP는 내부에서 외부로 나갔다가 들어오는 것만 가능하고 외부에서 내부로 직접 통신은 따로 설정을 통해서만 가능(포트포워딩)
      • 장점 : 내부 네트워크의 보안 가능
      • 내부 네트워크에 있는 호스트들은 사설 IP를 할당 받고,, 외부 네트워크와 통신할 때는 공인 IP로 변경되서 통신함
      • 통신할 때 NAT Table에 해당하는 사설 IP를 기록하고 외부 네트워크에서 응답이 올 때 해당하는 기록을 보고 해당하는 사설 IP로 데이터를 전달함
      • 현재 거의 대부분의 일반용, 가정용 PC 에서는 사설 IP를 사용
      • NAT(Network Address Translation)
        • 특정 IP를 특정 IP로 바꿔주는 기술
        • 공인 IP - 집에서 사용하는 인터넷 공유기
  • 특수한 IP 주소

    • Wildcard 0.0.0.0 : '나머지' 모든 IP
    • 나 자신을 나타내는 주소 127.0.0.1
    • 어딘가로 가려면 일단 여기로, 게이트웨이 주소 :
      • 일반적으로 공유기의 IP를 사용
      • 쓸 수 있는 IP 중 가장 낮거나(작거나) 가장 높은(큰) IP를 사용
      • 정해져 있지 않음
      • 외부 세상으로 나가는 문, 설정이 안되어 있으면 오고 가는 문이 없기 때문에 인터넷이 안됨(+ DNS 주소)
    • 네트워크 ID
      • IP주소 및 서브넷 마스크를 2진수로 표현 두 주소를 AND 연산
    • 브로드캐스드 주소
      • 호스트를 구분하는 주소 부분을 모두 1로 채움
    • 사용 가능 IP 범위
      • 네트워크 ID + 1 ~ 브로드캐스트 주소 -1 까지
  • 실습 1 - 내 PC의 사설 IP 주소 확인해보기

    • cmd에서 ipconfig /all 로 확인
  • 실습 2 - 내 PC의 공인 IP 주소 확인해보기

    • 네이버에서 '내 IP 주소 확인' 을 검색

따라學IT 05. 통신하기 전 반드시 필요한 ARP 프로토콜

이론

  • ARP(Address Resolution Protocol)

    • IP주소를 MAC 주소로 변환
    • 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP 주소를 이용해서 알아오는 프로토콜
    • 같은 네트워크 대역에서 통신을 한다고 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP 주소와 MAC 주소가 모두 필요함
    • 이때 IP 주소는 알고 MAC 주소는 모르더라도 ARP를 통해 통신이 가능함
    • 이더넷만 목적지 주소가 먼저 옴
  • ARP 구조

    • 한 줄에 4바이트, 7줄에 28바이트
    • 하드웨어 타입 : 2계층 주소의 타입, MAC 주소밖에 없음 0x0001(이더넷을 뜻하는 고유한 값, 이더넷 말고 다른 것도 있긴 함(아마도))
    • 프로토콜 타입 : 3계층 주소의 타입, IPv4 주소밖에 없음 0x0800
    • 하드웨어 주소 길이 : 2계층 주소의 길이, 0x06
    • 프로토콜 주소 길이 : 3계층 주소의 길이, 0x04
    • 오퍼레이션 코드 : ARP 요청 패킷인지 ARP 응답 패킷인지 알려주는 필드, 0x0001이면 요청 패킷, 0x0002이면 응답 패킷
    • 출발지 MAC 주소 6바이트
    • 출발지 IP 주소 4바이트
    • 목적지 MAC 주소 6바이트
    • 목적지 IP주소 4바이트
  • ARP 통신 과정

    <시스템A>
    10.10.10.10
    255.255.255.0
    AA:AA:AA:AA:AA:AA

    <시스템B>
    10.10.10.20
    255.255.255.0
    BB:BB:BB:BB:BB:BB

    • 시스템 A가 시스템 B로 통신을 시도하는 과정(IP 주소는 알고 있는 상태, MAC 주소는 모르고 있는 상태)
      • 1) 시스템 A는 ARP 테이블을 확인한다. (cmd에서 arp -a 명령어로 확인 가능)
      • 2) ARP 테이블에 존재하면 해당 MAC 주소로 통신, 없으면 ARP 요청 프로토콜을 작성

        [ETH 헤더][ARP 요청 프로토콜] 형식으로 캡슐화한 패킷을 전송
        *tip : FF:FF:FF:FF:FF:FF 은 MAC 주소의 브로드캐스트 주소(ip에서 모두 1로 채웠을 때 - 브로드캐스트)

      • 3) 작성한 ARP 요청 패킷을 시스템 A는 브로드캐스트로 전송
      • 4) 같은 네트워크에 있는 모든 시스템은 브로드캐스트로 전송된 패킷을 모두 받음, 이 때 모든 시스템은 Decapsulation 과정을 수행하고 ARP 프로토콜에서 IP주소를 확인, 받은 ARP 프로토콜과 IP주소가 다른 시스템들은 해당 패킷을 버리고 IP주소가 같은 시스템은 ARP 응답 프로토콜을 작성
      • 5) 응답 프로토콜을 받은 시스템 A는 ARP 응답 프로토콜에 작성된 내용을 ARP (캐시) 테이블에 등록

실습

  • 실습 1 - ARP 테이블 확인해보기

    • cmd에서 arp -a 로 확인
    • 통신했던 컴퓨터들의 주소는 ARP 테이블에 남음
    • 같은 네트워크 대역에서만 쓰임
  • 실습 2 - ARP 프로토콜 분석하기

    • Wireshark를 이용해서 ARP 프로토콜을 캡쳐하고 분석해보기
    • Info 탭에 '?'가 있는 것 - 요청, 없는 것 - 응답

따라學IT 06. 멀리 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다

  • 이더넷 프로토콜의 최소 단위 60바이트

IP 프로토콜 구조

  • IPv4 프로토콜
    • IPv4가 하는 일
      • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
      • 데이터가 정확하게 전달될 것을 보장하지 않음
      • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있음(악의적으로 이용되면 Dos 공격이 됨)
      • 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장함
    • IPv3 프로토콜의 구조
      • version : 무조건 4, IPv6는 구조 모양 자체가 다름
      • IHL(Internet Head Length) : IP 헤더의 길이(20~60/4) - 일반적으로 5(0101)
      • Type of Service(TOS) : 0, 옛날에 쓰던 것, 지금은 안씀
      • Total Length : 페이로드까지의 길이까지 합친 전체의 길이
      • 하나의 세트로 보면 됨 : 데이터가 큰 걸 보낼 때 최대 전송 단위가 있기 때문에 잘게 잘라서 보냄, 그때 사용되는 값들, 쪼개진 애들을 알아볼 수 있게 하는 값
      • Identification : ID 값, 하나의 데이터는 같은 ID 값을 가짐
      • IP Flags : 조각화가 됐냐 안됐냐, 3비트, x - 첫번째는 안씀, D_Don't Fragmentation(패킷을 보내는 사람이 데이터를 안쪼개서 보내겠다고 명시하는 것), M_More Fragmentation(조각화해서 보낼 때, 첫번째 패킷 뒤에 본인 패킷 말고 더 있음을 알려주는 것)
      • Fragment Offset : 13비트, 원래대로 복구할 때 쪼개진 데이터의 순서를 알아볼 수 있게 offset(어느 기준으로부터 얼마만큼 떨어져 있음)을 지정해줌
      • Time To Live : 패킷이 살아있을 수 있는 시간을 지정, 패킷이 계속 살아있어 계속 돈다면 DoS 공격이 될 수 있음, 장비 하나 넘어갈 때마다 -1, 운영체제마다 설정하는 값이 다름(윈도우 128, 리눅스 64)
      • Protocol : 이더넷의 이더넷 타입과 같은 역할로 상위 프로토콜이 무엇인지 알려주는 역할
      • Header Checksum : 헤더가 오류가 있는지 없는지 확인하는 값, 헤더에 있는 여러가지 필드를 가지고 값을 계산하여 세팅하여 보냄, 받는 쪽에서는 세팅된 값을 다시 계산하여 checksum 값과 비교
      • Source Address : 출발지 IP, 4바이트
      • Source Address : 목적지 IP, 4바이트
      • IP Option : 4바이트씩 최대 10개까지 붙을 수 있음(보통 20바이트, 최대 60바이트)

ICMP 프로토콜

  • ICMP 프로토콜
    • ICMP가 하는 일
      • ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)
      • 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는 데 주로 쓰임
      • 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받음
    • ICMP 프로토콜 구조 : 특정 대상과 내가 통신이 잘 되는지 확인
      • Type : 카테고리/대분류
        • 0, 8 : 0 - Echo Reply 응답, 8 - Echo 요청
        • 3, 11 : 3 - destination unreachable /보통 목적지까지 아예 가지 못함/가는 경로상의 문제(중간에 라우터나 경로 설정을 잘못하여 목적지까지 아예 못간 경우), 11 : time exceeded /목적지까지 갔는데 응답을 못받음/상대방의 문제(보통 방화벽)
        • 5 : ICMP redirect - 옛날에 쓰던 것, 원격지에 있는 상대방의 라우팅 테이블을 ICMP를 가지고 수정할 때 사용, 남의 것 수정 가능해서 보안상 중요해짐, 요새는 잘 안씀
      • Code : 소분류
      • Checksum
      • Other message specific information...

IPv4, ICMP 프로토콜 실습

  • wireshark 실행
  • cmd에서 아무에게나 ping IP 주소
  • wireshark에서 icmp 확인
  • 앞에 8바이터만 icmp 나머지는 무의미한 data
  • ipv4 - header length 20바이트/4 = 5 바이트, TOS -> Differentiated Services Field

라우팅 테이블 및 전송과정

  • 라우팅 테이블 : 3계층의 대표적인 역할이 최적의 경로를 저런 프로토콜로 찾아가는 건데, 그 최적의 경로를 지도처럼 저장해 놓고 있는 것
  • cmd : netstat -r
  • 다른 네트워크와 통신 과정
    • 다른 네트워크까지 내 패킷의 이동 과정/내 컴퓨터에서 보낸 패킷이 다른 네트워크의 컴퓨터까지 어떻게 이동하는가
    • A의 라우팅 테이블에 B의 네트워크 대역이 있어야만 통신이 가능
    • A에서 통신 확인을 위해 프로토콜을 작성하여 보냄
    • 이더넷 프로토콜은 네트워크 대역이 바뀔 때마다 새로 작성

라우팅 테이블 확인 실습

  • cmd : netstat -r

조각화 이론

  • IPv4의 조각화
    • 조각화란?
      • 큰 IP 패킷들이 적은 MTU(Maximum Transmission Unit, 데이터의 최대 전송 단위, 1500 바이트)를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어/조각화 되어 전송돼야 함
      • 즉, 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요함
      • 일단 조각화되면, 최종 목적지에 도달할 때까지 재조립되지 않는 것이 일반적
      • IPv4에서는 발신지 뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
      • IPv6에서는 IP 단편화가 발신지에서만 가능
      • 재조립은 항상 최종 수신지에서만 가능
      • 여러 개의 패킷으로 조각화 된 패킷
      • MTU에서 IPv4 프로토콜 크기(20 바이트)만큼을 빼고 계산
      • MF 1 : More Fragment, 내 뒤에 fragment가 더 있음
      • Offset : 순서, 앞의 데이터 크기/8
      • Identification : ID 값은 다 같음

조각화 실습

보내려는 데이터 크기 : 2379
MTU : 980

/ 2379 /
/960/ /960/ /459/
(MTU - 20 = data 960)

/20//960/ /20//960/ /20//459/

mf_1/offset_0/id_ab13
mf_1/offset_120/id_ab13
mf_0/offset_24/id_ab13

1) 몇개의 패킷으로 쪼개지는가?

  • 3
    2) 첫번째 패킷의 데이터의 크기는 몇인가?
  • 960
    3) 마지막 패킷의 데이터의 크기는 몇인가?
  • 459

  • wireshark에서 실습해보기
    1) wireshark 패킷 캡처 시작
    2) cmd ping (상대)IP주소 -l 2379
    3) 필터는 ip.addr==(상대)IP주소
    4) 3번 쪼개져서 전송되는 걸 확인할 수 있음
    5) ICMP, IP, 이더넷의 크기가 붙어서 계산한 프레임의 크기와 다르게 보임

따라學IT 07. 컴퓨터의 프로그램끼리는 이렇게 데이터를 주고 받는다

4계층 이론

  • 4계층에서 하는 일

    • 전송 계층(transport layer)은 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공함
    • 전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 그리고 다중화와 같은 편리한 서비스를 제공함
    • 전송 프로토콜 중 가장 잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(TCP), 보다 단순한 전송에 사용되는 사용자 데이터 프로토콜(UDP)
  • 4계층 프로토콜의 종류

    • UDP 프로토콜 : 안전한 연결을 지향하지 않는
    • TCP 프로토콜 : 안전한 연결을 지향하는
  • 포트 번호

    • 포트 번호의 특징
      • 특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용
      • 하나의 포트는 하나의 프로세스만 사용 가능
      • 하나의 프로세스가 여러 개의 포트를 사용하는 것은 가능
      • 포트 번호는 일반적으로 정해져 있지만 무조건 지켜야 하는 것은 아님
      • 하나의 프로그램은 하나의 포트 번호만 사용
      • 내 컴퓨터 기준에서 하나의 프로그램은 하나의 포트 번호, 상대방의 여러가지 프로그램은 나의 하나의 포트 번호로 연결 가능
    • Well-Known 포트 : 전 세계정으로 유명
    • Registered 포트 : 조금은 유명한
    • Dynamic 포트 : 일반 사용자들이 사용
      • 시작 포트 번호 49152번, 마지막 포트 번호 65535번(49152~65535)
  • 프로그램의 연결 정보

    • 나와 현재 연결되어 있는 컴퓨터들
      • cmd netstat -ano
      • 현재 포트 활성 여부를 나타내는 활성 연결 테이블

포트 연결 확인 실습

  • 프로그램의 연결 정보
    • 나와 현재 연결되어 있는 컴퓨터들
      • cmd netstat -ano
      • 현재 포트 활성 여부를 나타내는 활성 연결 테이블
      • 작업 관리자 > 보기 > 열 선택 > PID(프로세스 식별자) 체크 > 확인 > 작업 관리자 PID와 cmd PID 비교

특정 포트 사용 실습

따라學IT 08. 비연결지향형 UDP 프로토콜

이론

  • UDP 프로토콜

    • UDP가 하는 일
      • 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 유니버설 데이터그램 프로토콜(Universal Datagram Protocol)이라고 일컫기도 함
      • UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 함
      • UDP는 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에서 수행할 것으로 가정
  • UDP 프로토콜을 사용하는 프로그램

    • UDP 프로토콜을 사용하는 대표적인 프로그램들
      • 도메인을 물으면 IP를 알려주는 DNS 서버
      • UDP로 파일을 공유하는 tftp 서버
      • 라우팅 정보를 공유하는 RIP 프로토콜
        • 일일이 하나하나 수동으로
        • 라우터들끼리 서로 정보를 공유해서 최신 라우팅 테이블을 서로 알 수 있게 해주는 프로토콜(RIP 등)

tftpd로 파일 전송 실습

  • tftpd를 사용하여 데이터 공유해보기
    • tftpd 프로그램을 이용하여 UDP를 이용한 데이터 통신 해보기 ref.
    • 큰 파일은 잘 보내지 않음
    • 특수한 경우(동영상 스트리밍 등)
    • 일반적으로 정상적이지 않은 PC(?) - ex) 운영체제가 설치되어 있지 않는 곳에 운영체제 이미지를 보낻 때
  • 패킷 캡쳐 및 분석해보기
    • UDP 패킷을 캡처해보고 분석해보기

따라學IT 09. 연결 지향형 TC 프로토콜

TCP 프로토콜 구조와 TCP의 플래그

  • TCP 프로토콜
    • TCP가 하는 일
      • 전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 함
      • TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(User Datagram Protocol)을 사용함
      • TCP는 UDP보다 안전하지만 느림
    • TCP 프로토콜의 구조
      • Offset : 헤더의 길이, 4로 나눔(?)
      • Reserved : 예약된 필드, 사용하지 않음
      • Window : 데이터 보내도 돼? 어 돼, 도착했어? 어, 얼마나 더 보내도 돼? 이정도 더 보내도 돼~~~ / 남아 있는 TCP 버퍼 공간
  • TCP 플래그 : TCP가 계속해서 통신을 하면서 상대방이랑 연결 상태를 물어봄, 여러가지 형태로 데이터를 보냄, 그때 나타내는 값, TCP의 주된 기능이 플래그로 나눠짐
    • TCP 플래그 종류
      • Reserved, Nonce
      • C congestion window reduced CWR
      • E ECN- Echo
      • U urgent 긴급비트 : 지금 보내는 거 우선순위가 좀 높음, 급한 데이터임, Urgent Pointer와 세트
      • A acknowledgement 승인비트 : 물어본 거에 대한 응답을 해줄 때
      • P push : TCP 버퍼가 일정 크기만큼 쌓여야 패킷을 추가적으로 전송하는데 이거와 상관없이 데이터를 계속해서 밀어 넣겠음
      • R 초기화 : 서로 연결이 되어 있는 상태에서 추가적으로 뭔가 reset데이터를 주고받으려 하는데 문제가 발생, 우리 둘 사이의 연결 관계를 새로고침, 리셋하자
      • S syn 동기화 : 상대방이랑 연결을 시작할 때무조건 사용하는 플래그로써, 얘가 처음 보내지고 난 다음부터 이 둘 사이의 연결이 서로 동기화되기 시작, 서로 상태를 주고 받으며 서로 상태를 계속 동기화 시킴
      • F fin 종료 : 연결을 끊을 때

TCP 3Way Handshake

  • TCP를 이용한 통신 과정
    • 연결 수립 과정
      • TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
        (1) 클라이언트가 서버에게 요청 패킷을 보내고
        (2) 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
        (3) 클라이언트는 이를 최종적으로 수락하는 패킷을 보냄
      • 위의 3개의 과정을 3Way Handshake라고 부름

TCP를 이용한 데이터 전송 과정

  • TCP를 이용한 통신 과정
    • 데이터 송수신 과정
      • TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 일정한 규칙
        (1) 보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK번호가 그대로
        (2) 받는 쪽에서 SEQ번호는 받은 ACK번호가 됨
        (3) 받는 쪽에서 ACK번호는 받은 SEQ번호 + 데이터의 크기

TCP의 연결 상태 변화

  • 실선 : 클라이언트의 상태 변화
  • 점선 : 서버의 상태 변화
  • 동그라미 : 상태
    • Listen 상태 : 4계층은 포트 번호를 사용, 이 포트 번호를 서버 쪽에서 열어 놓은/사용하고 있는 상태, 클라이언트의 요청을 계속 듣고 있는 상태
    • Established 상태 : 연결이 서로 수립이 된 상태, 3Way Handshake가 끝난 상태
    • SYN_RCVD : SYN를 받은 서버의 상태, SYN/ACK 패킷을 보냄
  • active open : 능동적으로 포트를 여는 것, 클라이언트, SYN 패킷 전송
  • passive opne : 수동적으로 포트를 여는 것, 서버

TCP 프로토콜 분석 실습

  • TCP 프로토콜을 Wireshark에서 캡처한 후 데이터를 주고 받는 과정 분석 ref.

따라學IT 10. NAT와 포트 포워딩

이론

  • NAT
    • NAT란?
      • NAT(Network Address Translation)은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술
      • 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 함
      • NAT를 이용하는 이유는 대게 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사요 ㅇ하여 인터넷에 접속하기 위함
      • 하지만 꼭 사설IP를 공인IP로 변환하는 데에만 사용하는 기술은 아님
      • 특정 IP 주소에 특정 포트 번호로 가는 패킷을 다른 IP 주소에 다른 포트 번호로 바꾸어 주는 것
  • 포트포워딩
    • 포트포워딩이란?
      • 포트 포워딩 또는 포트 매핑(port mapping)은 패킷이 라우터나 방화벽과 같은 네트워크 장비를 가로지르는 동안 특정 IP 주소와 포트 번호의 통신 요청을 특정 다른 IP와 포트 번호로 넘겨주는 네트워크 주소 변환(NAT)의 응용
      • 이 기법은 게이트웨이(외부망)의 반대쪽에 위치한 사설 네트워크에 상주하는 호스트에 대한 서비스를 생성하기 위해 흔히 사용됨
      • 특정 포트로 들어온 요청을 다른 특정 IP의 특정 포트로 전송

포트포워딩 설정 실습 ref.

  1. 포트포워딩 설정해보기
  • 포트포워딩을 이용하여 다른 사용자들이 사설IP를 사용하는 서버로 접속할 수 있도록 설정해보기
  1. 사설 IP를 사용하는 서버로 접속해보기
  • 사설 IP를 사용하는 가상머신에 서버를 설정하고 해당 서버를 포트포워딩을 통해 접속할 수 있도록 설정해보기

NAT vs 포트포워딩 ref.

  • NAT : 특정 라우터에서 해당 패킷이 어느 IP로 해석되는지 가지고 있는 테이블에 매핑하는 것
    • Deestination을 가지고 있음
    • 일반적으로 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용해서 인터넷과 통신하기 위해 사용
  • 포트포워딩 : 해당 포트로 들어오는 TCP/UDP + SSH 등의 패킷이 들어온다면 특정 IP로 보냄
    • Destination에 관한 내용이 없음, 해당 패킷은 도착지를 전혀 모름
    • 게이트웨이와 같은 외부 망의 반대쪽에 위치한 사설 네트워크의 호스트에 연결하기 위해 주로 사용하는 것

따라學IT 11. www(웹)를 이용할 때는 이렇게 데이터를 주고 받는다

HTTP 프로토콜이란?

  • HTTP 프로토콜
    • 웹을 만드는 기술들
      • 외 등등
      • HTML : 웹 페이지를 채울 내용
      • Javascript : 웹 페이지에 들어갈 기능
      • CSS : 웹 페이지를 예쁘게 꾸밀 디자인
      • ASP/ASP.NET,JSP,PHP : 웹 서버 페이지를 만드는 기술
    • HTTP 프로토콜의 특징
      • HyperText Transfer Protocol(하이퍼 텍스트 전송 프로토콜)
      • www에서 쓰이는 핵심 프로토콜로 문서의 전송을 위해 쓰이며, 오늘날 거의 모든 웹 애플리케이션에서 사용되고 있음
        • 음성, 화상 등 여러 종류의 데이터를 MIME로 정의하여 전송 가능
      • HTTP 특징
        • Request/Response(요청/응답) 동작에 기반하여 서비스 제공
        • HTTP 1.0의 특징
          • 연결 수립, 동작, 연결 해제의 단순함이 특징
            • 하나의 URL은 하나의 TCP에 연결
          • HTML 문서를 전송 받은 뒤 연결을 끊고 다시 연결하여 데이터를 전송
          • 단순 동작(연결 수립, 동작, 연결 해제)이 반복되어 통신 부하 문제 발생
        • HTTP 1.1의 특징
          • HTTO 1.0과 호환 가능
          • Multiple Request 처리가 가능하여 Client의 Request가 많을 경우 연속적인 응답 제공
            • Pipeline 방식의 Request/Response 진행
          • HTTP 1.0과는 달리 Server가 갖는 하나의 IP Address와 다수의 Web Site 연결 가능
          • 빠른 속도와 Internet Protocol 설계에 최적화될 수 있도록 Cache 사용
          • Data를 합축해서 전달이 가능하도록 하여 전달하는 Data 양이 감소

HTTP 메소드

  • HTTP 요청 프로토콜
    • HTTP 요청 프로토콜의 구조
      • 요청하는 방식을 정의하고 클라이언트의 정보를 담고 있음
      • Request Line
        • [요청타입][공백][URI][공백][HTTP 버전]
        • HTTP 메소드 요청 방식 :

URL, URI란?

  • URI Uniform Resource Identifier : 인터넷 상에서 특정 자원(파일)을 나타내는 유일한 주소 // 주소 전체
    • 특정 리소스를 식별하는 통합 자원 식별자를 의미하며, 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스
    • 어디에 어느 폴더에 저장되어 있는 어떤 파일
  • URL : 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약 ref.

HTTP 요청 프로토콜 작성 실습 ref.

  1. HTTP 프로토콜 작성 실습
  • Netcat을 이용하여 HTTP 프로토콜을 직접 작성해보기
  1. HTTP 프로토콜 수정 실습
  • HTTP 요청과 응답 프로토콜을 각각 캡쳐해보고 수정해보기

URI 이해를 위한 실습

ref.

HTTP 응답 프로토콜의 구조

  • HTTP 응답 프로토콜
    • HTTP 응답 프로토콜의 구조
      • 사용자가 볼 웹 페이지를 담고 있음
      • Status Line
        • [HTTP 버전][공백][상태 코드][공백][상태 문구]
        • 상태 코드 서버가 알려주는 여러가지 정보 -
          • 200번대 : 성공적인 통신
            • 상태 코드 종류-200/상태 문구-OK/설명-Client의 요청이 성공했다는 것을 나타냄
          • 400번대 : 클라이언트의 실수, 잘못, 오류
            • 상태 코드 종류-403/상태 문구-Forbidden/설명-Client가 권한이 없는 페이지를 요청했을 때
            • 상태 코드 종류-404/상태 문구-Not Found/설명-Client가 서버에 없는 페이지를 요청했을 때
          • 500번대 : 서버의 실수, 잘못, 오류
            • 상태 코드 종류-500/상태 문구-Internal Server Error/설명-Sever의 일부가 멈췄거나 설정 오류가 발생
            • 상태 코드 종류-503/상태 문구-Service Unavailable/설명-최대 Session 수를 초과했을 때

HTTP 헤더

  • HTTP 헤더 포맷
    • 수많은 정보를 담고 있는 HTTP 헤더 구조
    • 일반(둘다 사용할 수 있음), 요청/응답(각자 사용), 항목(특별한 경우 사용)
    • 일반적인 정보를 담고 있는 일반 헤더
    • 클라이언트 정보를 담고 있는 요청 헤더
    • 서버 정보를 담고 있는 응답 헤더

HTTP 프로토콜 분석 실습

ref.

0개의 댓글