610 likes | 1.39k Views
2 주차 . TCP/IP 패킷 분석. 수원과학대학 정보통신과. 2.1 PC 의 네트워크 설정 보기. 명령창 열기 : 시작 모든 프로그램 보조프로그램 명령프롬프트 또는 시작 실행 cmd ipconfig /all. 2.2 Wireshark 의 설치와 사용. wireshark 를 실행하여 인터페이스 보기 아이콘을 클릭한다. 인터페이스 리스트 보기 클릭. Wireshark – 인터페이스 고르기. 인터페이스 리스트에서 인터넷과 연결된 인터페이스를 고르시오.
E N D
2주차. TCP/IP 패킷 분석 수원과학대학 정보통신과
2.1PC의 네트워크 설정 보기 • 명령창 열기: 시작모든 프로그램보조프로그램명령프롬프트 또는 시작실행cmd • ipconfig /all
2.2 Wireshark의 설치와 사용 • wireshark를 실행하여 인터페이스 보기 아이콘을 클릭한다 인터페이스 리스트 보기 클릭
Wireshark – 인터페이스 고르기 • 인터페이스 리스트에서 인터넷과 연결된 인터페이스를 고르시오. IPv6형식이면 클릭하여 IPv4형식으로 바꾼다. ①체크 ②클릭
Wireshark – 캡쳐링 • 패킷이 적절히 수집되면 캡처를 중단한다. 캡처중지
Wireshark – 캡쳐링 결과 분석 캡쳐된 패킷들의 개요화면으로 시간, 발신지와 목적지 정보, 프로토콜, 요약정보를 보여줌 위에서 선택한 패킷의 인캡슐레이션과 필드값들을 보여줌 위에서 선택한 패킷의 바이트 값을 보여줌
캡쳐링 인터페이스 선택 • 인터페이스 리스트에서 인터넷과 연결된 인터페이스를 고르고 옵션을 클릭한다. IPv6형식이면 클릭하여 IPv4형식으로 바꾼다. ①체크 ②클릭
옵션 창에서 인터페이스 고르기 ①더블클릭
캡쳐 필터 입력 ① host 자신의ip주소 를 입력한다. ②클릭 이렇게 필터를 넣으면 자신의 ip 주소가 들어간 패킷만 캡쳐해주게 된다.
캡쳐 시작 ①클릭
2.3 Ethernet (이더넷) • LAN에서 사용하는 가장 대표적인 네트워킹 방식 • 전세계 LAN의 95% 이상이 Ethernet • Ethernet의 가장 큰 특징 • CSMA/CD MAC(Medium Access Control) protocol 사용
CSMA/CD • Carrier Sense Multiple Access / Collision Detection • Carrier Sense (캐리어 감지) • 통신을 하고자 하는 PC나 server 들은 네트워크 상에 통신이 일어나고 있는지 carrier를 감지 • Multiple Access (다중 접근) • Carrier가 감지되지 않을 때 PC나 server들이 연결된 매체를 통해 네트워크 상에 데이터를 실어 보는 것 • Collision Detection (충돌 감지) • 두 개 이상의 장비들이 동시에 데이터를 보내려다 서로 부딪치는 것 • Collision이 발생하면 데이터를 전송했던 PC들은 서로 랜덤(random)한 시간 동안 기다린 후 데이터 전송을 재시도 • 15번을 반복해서 시도했으나 계속 collision에 의해 데이터 전송에 실패할 경우 데이터 전송을 포기
2.3.2 이더넷 주소 • MAC (Media Access Control) address • Physical address(물리주소), hardware address 라고도 함 • 참고) IP address는 logical address 라고도 함 • Ethernet 상에서 각 장비의 NIC(Network Interface Card)들은 48bit(6 octet, octet: 8bits)의 고정된 주소를 보유함 • 표기법 • 00-60-97-8F-4F-86 • 00:60:97:8F:4F:86 • 0060.978F.4F86 • 48bits 중 앞 24bits는 제조자 코드, 뒤 24bits는 각 maker가 만든 NIC에 부여하는 일련번호임 • 제조자 코드는 OUI (Organizational Unique Identifier) code라고도 함 24bits 24bits 제조자 코드 일련번호
Unicast / Broadcast / Multicast • 유니캐스트(unicast) 통신 • 일 대 일 통신 • 하나의 목적지 주소만을 적어서 특정한 PC에게 보내는 방식 • 브로드캐스트(broadcast) 통신 • 하나와 불특정한 다수와의 통신 • Broadcast domain에 있는 모든 PC에게 한번에 전달하는 방식 • Router는 broadcast packet을 전달하지 않으므로 router까지의 구간이 broadcast domain임 • 보통, 브로드캐스트 주소는 모든 비트가 “1”이다 • 이더넷의 Broadcast MAC address: FFFF.FFFF.FFFF • 멀티캐스트(multicast) 통신 • 하나와 특정한 다수(특정 그룹 멤버)와의 통신 • 라우터나 스위치가 multicast를 지원해야 함
2.3.3 이더넷 프레임 형식 • 이더넷 프레임 구조 2 46-1500 4 1 6 6 7 Source Address Preamble SFD Destination Address Type or Length Data FCS
Preamble(101010…패턴의 7바이트) - 프레임 도착 알림, 타이밍 기능 제공 • SFD(Start frame delimiter) - 프레임 시작을 나타내는 비트열, 10101011 • DA(Destination address) - 목적지 주소 • SA(Source address) - 발신지 주소 • Type or Length – 이 필드의 값이 1518보다 작으면 데이터 필드의 길이를 의미하지만 1536보다 크면 이 프레임에 어떤 상위 계층 프로토콜의패킷이 실려 있는 지를 나타냄 • 0x0800 : IP, 0x0806: ARP • Data - 46~1500 바이트길이 • CRC - 오류 발견정보, CRC-32
2.3.4 Ethernet 표준 • 10Mbps Ethernet • 10Base5, 10Base2 - 동축 케이블 • 10Base-T – category 3 UTP cable, 2 pair • 10Base-FL (fiber-optic) – 광섬유 • 100Mbps Ethernet • 100Base-TX – category 5 UTP cable, 2 pair • 100Base-T4 – category 3 UTP cable, 4 pair • 100Base-FX - 광섬유(optical fiber) • 1Gbps Ethernet (1GbE) • 1000Base-SX, 1000Base-LX – 광섬유 • 1000Base-T - category 5E UTP cable, 4-pair • 1000Base-CX – STP • 10Gbps Ethernet (10GbE)
2.4 IP (Internet Protocol) • IP의 특징 • 신뢰성 없는 비연결성의 데이터그램 프로토콜 • 최선노력전달 (best-effort delivery) 서비스 제공 • 흐름제어나 오류제어 등과 같은 기능은 사용하지 않으면서 모든 패킷을 동등하게 최선의 노력을 다해 전송 • 오류 발생시 폐기, 재전송 없음 데이터 전송을 보장하지 않음 • 신뢰성이 필요하면 TCP와 같은 상위 계층 (전송층) 프로토콜을 사용하여 데이터 전송을 보장해야 함 • 데이터그램이 독립적으로 전달되므로 도착순서가 전송순서와 다를 수 있음 상위 계층 프로토콜 (TCP)이 해결해야 함
2.4.2 IP 헤더 형식 ( )안의 숫자는 비트수 기본헤더 20바이트 총 길이 20 ~ 65535 바이트 옵션헤더 0~40바이트
IP 헤더의 각 필드의 기능 (1) • VER - 버전, IPv4의 경우는 0100 • HLEN - 헤더 길이, 4바이트 단위로 기록, 실제 헤더길이는 HLEN*4 • DS (differentiated services) – 원래는 TOS (type of service) 필드로 라우터에 특별한 처리를 요청할 목적으로 만들어졌지만 잘 사용되지 않다가, 최근 QoS (quality of service) 제공을 목적으로 데이터그램의 등급을 구별하기 위한 필드로 사용되고 있음 • Total Length - IP 데이터 그램 총 길이(헤더와 데이터 길이의 합), 데이터 길이는 총길이 – 헤더길이 (HLEN*4) 로 계산, 16비트이므로 IP 데이터그램은 최대 65536 바이트가 될 수 있음 • Identification, Flags, Fragmentation offset – 단편화 용 필드 • Time to live (TTL) - 데이터그램을 폐기하기 전에 전달될 수 있는 홉 수, 이 필드값은 라우터를 거칠때마다 1씩 감소, 0이되면 라우터가 이 패킷을 폐기함, 이 필드는 패킷이 무한정 네트워크상에서 돌아다니는 것을 막기 위함임. • 기본 TTL 값: Windows = 128, Linux = 64~255, Unix = 255
IP 헤더의 각 필드의 기능 (2) • Protocol – IP를 이용하는 상위 계층 프로토콜 정의 • 1: ICMP, 2 : IGMP, 6: TCP, 17: UDP, 89 : OSPF • Header checksum • 헤더의 오류 검사를 위한 필드 • 라우터의 처리속도를 높이기 위해헤더만 오류 검사하고, 데이터의 오류검사는 안함 필요하면 상위계층에서! • Source IP address • 발신지 IP 주소 • Destination IP address • 목적지 IP 주소 • Option • 선택사항
2.4.3 IP 주소 형식 • 인터넷에서 접속하는 연결을 구분하기 위해 호스트들의 네트워크 인터페이스에 부여된 전세계적으로 유일한 주소 • IP 주소의 표현 • IPv4(IP version 4) 에서의 주소: 4 bytes 크기 • 예: 192.168.166.254 • IPv6(IP version 6)에서의 주소: 16 bytes 크기
Classful Addressing • 초기의 IP 주소체계는 클래스형 체계이었으나 1990년대 중반 이후부터 비클래스형 체계가 도입됨 • 클래스형 IP 주소는 네트워크 부분(netid)과 호스트 부분(hostid)로 구성되어 있음 • Network: router를 거치지 않고 바로 받을 수 있는 하나의 broadcast domain을 가리킴 • Host: 각각의 PC나 장비 • IP 주소 할당의 기본 • 하나의 Network에 속한 host들의 IP 주소들은 network part에 해당하는 netid가 같아야 하고, host part에 해당하는 hostid가 서로 달라야 함 • 예) 하나의 Network에 할당된 IP 주소가 200.200.100.1 ~ 200.200.100.255 일 때 • netid: 200.200.100 • hostid: 1 ~ 255
IP 주소의 클래스 • 하나의 IP 주소에서 netid와 hostid의 경계의 구분 Class로 식별 • IP 주소의 Class • A, B, C, D, E의 5개 class가 있음 • A, B, C – Unicast 용, D – Multicast 용, E - 연구용 첫번째 바이트 네번째 바이트 두번째 바이트 세번째 바이트 - 주소범위 - 클래스 A netid hostid 0.0.0.0 ~ 127.255.255.255 클래스 B netid hostid 128.0.0.0 ~ 191.255.255.255 192.0.0.0 ~ 223.255.255.255 netid hostid 클래스 C 224.0.0.0 ~ 239.255.255.255 클래스 D Multicast address 클래스 E Reserved 240.0.0.0 ~ 255.255.255.255
특수한 IP 주소들 • Network address • hostid의 모든 비트가 0 으로 (netid, 0)의 형식 • 예) 163.152.0.0 클래스 B 네트워크 주소 • Broadcast address • hostid의 모든 비트가 1인 주소 • 특정 네트워크의 모든 호스트로 브로드캐스팅 • 예) 163.152.255.255는 163.152.0.0에 속한 모든 호스트로 브로드캐스팅 • Loop back address • 127.X.X.X의 형식으로 127.0.0.1 이 보통 사용 • 자기자신을 가리키는 주소로써 시스템에 TCP/IP가 제대로 설치되고 작동되는지 테스트하기 위해 사용 • 사설 IP • 인터넷과 독립적인 사설망에서 TCP/IP를 사용할 경우 사용 • 클래스 A용 사설 IP: 10.0.0.0 ~ 10.255.255.255 • 클래스 B용 사설 IP: 172.16.0.0 ~ 172.31.255.255 • 클래스 C용 사설 IP: 192.168.0.0 ~ 192.168.255.255
디폴트 마스크 • Class 별 default mask (default subnet mask라고도 함) • 어떤 IP 주소로부터 네트워크 주소를 추출하는 마스크 • (IP 주소) bit AND (Default Mask) = Network Address • 슬래쉬 표기법 – 마스크를 간단히 표현하기 위해 슬래쉬(/) 후 1의 개수를 적는다
Subnetting의 필요성 (1) • Subnet을 사용하지 않을 때 • Network 141.14.0.0의 host 수 = 65534개 너무 많다. • Broadcast domain이 너무 크다. • 실제 상황에서는 통신이 어려울 것임.
서브넷 마스크로 서브넷 찾기 • Subnetting을 사용할 때 • 서브넷을 안 쓸 때 네트워크 주소 추출 netid hostid netid 0 netid만 추출 hostid의 일부를 subnetid로 할당 • 서브넷을 쓸 때 netid subnetid hostid netid subnetid 0 네트워크 주소 추출 netid부터 subnetid까지 추출
서브넷 수와 호스트 수 계산 • 어떤 네트워크를 서브넷팅했을 때 • 사용가능한 서브넷 수 = 2subnetid 비트 수- 2 • Subnetid의 모든 비트가 0인 것(zero subnet)과 1인 것은 통상 사용하지 않음 • 서브넷 당 사용가능한 호스트 주소의 개수 = 2hostid 비트 수- 2 • Hostid의 모든 비트가 0인 것은 네트워크 주소용이고, 모든 비트가 1인 것은 브로드캐스트 주소용이므로 할당 불가 • 예: 클래스 B 네트워크에서 subnetid로 4비트, hostid로 12비트를 선택했을 때 • 사용가능한 서브넷의 개수 = 24- 2 = 14 • 서브넷 당 사용가능한 호스트 주소의 개수 = 212- 2 = 4094
Subnet의 기본 • Subnet mask • Subnet address를 추출하기 위한 mask subnetid까지 비트 1 • 서브넷을 쓸 때 원래의 hostid에서 subnetid로 몇 비트를 할 것인가는 해당 사이트를 담당하는 네트워크 관리자의 선택임 • 예) 클래스 B 네트워크에서 subnetid로 4비트, hostid로 12비트를 선택했을 때 • 클래스 B 디폴트 마스크 255.255.0.0 11111111 11111111 00000000 00000000 • 새로운 서브넷 마스크 11111111 11111111 1111 0000 00000000 255.255.240.0 240
Subnet Mask • Subnet mask • Subnet address를 추출하기 위한 mask subnetid까지 비트 1 • 원래의 hostid에서 subnetid로 몇 비트를 할 것인가는 해당 사이트를 담당하는 네트워크 관리자의 선택임 • 예) 클래스 B 네트워크에서 subnetid로 3비트, hostid로 13비트를 선택했을 때 • 사용가능한 서브넷의 개수 = 23-2 = 6 • subnetid의 모든 비트가 0(subnet zero)인 것과 모두 1인 것은 통상 사용하지 않음 • 서브넷 당 사용가능한 호스트 주소의 개수 = 213-2 = 8190 • 서브넷 주소와 브로드캐스트 주소는 호스트에게 줄 수 없음
2.5 ARP • 주소 변환 프로토콜 (ARP: address resolution protocol) • IP 주소를 MAC 주소로 변환, MAC 주소를 알아야 전송이 가능 • ARP operation 1.1.1.2 1.1.1.2 모두에게: IP주소 1.1.1.3의 호스트는 네 물리주소를 알려줘! 1.1.1.1 에게: 내 물리주소는 12:34:56:78:9A:BC 1.1.1.3 1.1.1.1 1.1.1.1 1.1.1.3 1.1.1.4 1.1.1.4
ARP Packet 16 31 0 0 32 64
ARP 패킷 형식 • HTYPE (hardware type) – LAN의 유형, 예로 이더넷의 경우는 1 • PTYPE (protocol type) – ARP를 사용하는 네트워크 프로토콜을 정의, 예로 IPv4의 경우는 0x0800 • HLEN (hardware length) – 물리주소의 길이, 이더넷의 경우는 6 • PLEN (protocol length) - 네트워크주소의 길이, IPv4의 경우는 4 • OPER (operation) – ARP 요청인 경우는 1, 응답인 경우는 2 • SHA (sender hardware address) – 송신 호스트의 물리주소 • SPA (sender protocol address) – 송신 호스트의 네트워크 주소 • THA (target hardware address) – 수신 호스트의 물리주소 • TPA (target protocol address) – 수신 호스트의 네트워크 주소
Encapsulation of ARP Packet • ARP 패킷은 데이터링크층 프레임에 캡슐화(encapsulation)됨 • 이더넷 프레임의 type 필드: 전송되는 데이터가 ARP임을 나타냄 • 0x0806: ARP Destination Address Source Address Type 0x0806 ARP Packet FCS
2.6 ICMP • IP의 단점 • 여러가지 이유에 의해 패킷이 폐기되어도 발신지에게 그 사실을 통보할 수단을 보유하고 있지 않음 • 다른 라우터나 호스트의 상태를 파악하기 위한 방법 부재 • ICMP (internet control message protocol) • 위 2가지 단점을 보완하기 위한 IP의 보조프로토콜 • 네트워크층 프로토콜이나 IP 패킷에 캡슐화되어 전달됨 IP 헤더의 protocol 필드 값은 0x01 Destination Address Source Address Type 0x0800 IP Header ICMP Packet FCS
Type – ICMP 메시지 타입 Code –특정 메시지에 대한 세부 타입 Checksum –전체 메시지 내용에 대한 16비트 checksum ICMP 메시지 형식
2.6.1 ICMP 오류 보고 메시지 • ICMP 오류 보고의 특징 • 오류 메시지는 최초 송신지에게 전달된다. • 오류의 종류 • 목적지 도달 불가, 송신지 억제, 시간경과, 매개변수 문제, 재지정 • 오류가 보고되지 않는 경우 • ICMP 오류 메지지를 전달하는 데이터그램에 오류가 발생할 때 • 단편화된 첫번째 데이터그램이 아닌 데이터그램에 오류가 발생할 때 • 멀티캐스트 주소를 가진 데이터그램에 오류가 발생할 때 • 127.0.0.0이나 0.0.0.0과 같은 특별한 주소를 가진 데이터그램에 오류가 발생할 때 • 오류 메시지의 데이터 부분에는 원래 데이터그램의 IP 헤더와 데이터 중 처음 8바이트(TCP 나 UCP 포트번호가 포함된 TCP 헤더의 일부나 UDP 헤더)가 포함됨
목적지 도달 불가 (Desitnation Unreachable) 메시지 • 라우터나 호스트가 데이터그램을 라우팅하거나 배달할 수 없을 때 데이터그램을 폐기하고, 송신지 호스트에게 “ICMP Destination Unreachble”(목적지 도달 불가) 메시지를 보냄 • 코드 필드에 16개의 오류 코드를 기록하여 오류 원인을 표시함
발신지 억제 (Source Quench) 메시지 • 라우터나 호스트에서 처리할 수 있는 속도 이상의 데이터그램이 계속 유입되어 버퍼의 용량를 초과하게 되면 데이터그램이 폐기되는데 이때 이 메시지를 발신 호스트로 보낸다. • 이 메시지를 받은 발신 호스트는 발신 속도를 일시적으로 떨어뜨린 후 다시 서서히 올리는 데 이 메시지가 또 수신되면 다시 속도를 떨어뜨림으로써 흐름제어를 제공한다.
시간 초과 (Time Exceeded) 메시지 • 데이터그램이 라우터를 통과할 때마다 TTL 필드값이 1씩 줄어드는데 이 필드가 0이되면 라우터는 이 데이터그램을 폐기하고 폐기 내역을 송신 호스트에게 통보한다 (Code 필드값 = 0). • 또한 단편이 손실되어 재조립 시간이 타임 아웃되었을 경우도 이 메시지가 송신호스트에게 전달된다 (Code 필드값 = 1). • 시간초과 메시지를 이용한 대표적인 응용: traceroute (Windows: tracert)
traceroute 목적지까지의 경로상에 위치한 라우터들의 주소를 알아낼 수 있다.
매개변수 문제 (Parameter Problem) 메시지 • 라우터나 호스트는 데이터그램의 IP 헤더 매개변수에 오류가 있을 경우 데이터그램을 폐기하고 parameter problem 메시지를 송신지로 보냄 • 포인터 필드값은 오류가 있는 위치를 가리킨다. • 코드 필드 • 0x00: 헤더의 필수 필드에 오류가 있다. • 0x11: 헤더의 옵션 필드에 오류가 있다.
2.6.2 ICMP 질의 메시지 • 네트워크 문제 진단 목적 • 질의 메시지의 종류
에코요청과 응답 (Echo Request and Reply) 메시지 • 원격 네트워크나 호스트에 도달할 수 있는지를 테스트 하기 위한 것. • ICMP 에코 요구(Type&Code:0x0800) 메시지를 받은 원격 라우터나 호스트는 ICMP 에코 응답(Type&Code:0x0000)을 사용하여 수신된 메시지의 내용을 그대로 송신지로 보내준다. • 전형적인 예: ping • 송신측은 identifier와 sequence number에 ping 메시지마다 서로 다른 값을 부여함으로써 각 ping에 대한 응답메시지를 구별한다.
2.7 UDP • 사용자데이터그램 프로토콜 (User Datagram Protocol, UDP) • 흐름 및 오류제어가 없는 비연결이고 신뢰성 없는 전송 프로토콜 • 최소한의 오버헤드를 가진 매우 간단한 프로토콜 • 작은 메시지를 송신하기를 원하고 신뢰성에 관하여 신경쓰지 않는 응용에 적합, 간단한 요청-응답 통신을 요구하는 프로세스에 적합 • 멀티미디어와 멀티캐스팅 응용에 적합
UDP 패킷 형식 64 16 48 0 32 Source Port Number Destination Port Number Total Length Checksum Data 발신지 포트번호 수신지 포트번호 검사합 총길이
전송제어프로토콜(Transmission Control Protocol, TCP) 스트림 연결지향(stream connection-oriented)의 신뢰성 있는 전송 프로토콜, UDP에 비해서 복잡 잘 알려진 TCP 포트번호 2.8 TCP