Bai 6 2 raw sockets

29 316 0
Bai 6 2 raw sockets

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Raw sockets - Socket thô Có thể …  Chúng ta muốn sử dụng chức giao thức ICMP, IGMP   Chúng ta muốn viết chương trình cho định tuyến   Nhưng xử lý gói tin ICMPv4, IGMPv4 ICMPv6 với TCP/UDP sockets Nhưng xử lý gói tin OSPF nào? Chúng ta muốn công vào máy tính với gói tin giả mạo  Chúng ta tạo gói tin nào? Câu trả lời  “Sử dụng socket thô” Chúng ta làm với socket thô?  Cho phép tiến trình nhận gửi gói tin ICMPv4, IGMPv4, ICMPv6  E.g chương trình ping, traceroute  Cho phép tiến trình nhận gửi gói tin IPv4 không xử lý hệ điều hành  Hầu hết hệ điều hành xử lý gói tin chứa trường giao thức (ICMP), (IGMP), (TCP), and 17 (UDP)  Giao thức định tuyến OSPF có trường giao thức 89  Cho phép tiến trình tự xây dựng IPv4 header  sử dụng tùy biến IP_HDRINCL Hạn chế socket thô  Không có chế đảm bảo tính tin cậy truyền tin  Không có số hiệu cổng  Truyền tin không theo chuẩn  Không có gửi gói tin ICMP tự động  Không có TCP UDP thô  Để tạo socket thô, cần có quyền root (hoặc administrator) Tạo socket thô  Chỉ có superuser tạo socket thô #include sockfd = socket(AF_INET, SOCK_RAW, protocol);   gán SOCK_RAW cho tham số thứ hai khởi tạo socket tham số protocol số định nghĩa IPPROTO_xxx  E.g IPPROTO_ICMP, IPPROTO_RAW Thiết lập tùy biến IP_HDRINCL  Để tự tạo IPv4 header  const int on = 1; if (setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) error Gửi liệu với socket thô  Gọi hàm sendto sendmsg, thiết lập địa IP đích    Nếu tùy biến IP_HDRINCL không thiết lập, địa liệu gửi tương ứng với byte sau IP header Nếu tùy biến IP_HDRINCL thiết lập, địa liệu gửi tương ứng với byte IP header Hệ điều hành phân mảnh gói tin kích thước gói tin vượt MTU giao diện mạng Nhận liệu với Socket thô      Thường dùng với hàm recvfrom() Các gói tin UDP TCP không gửi vào Socket thô Hầu hết gói tin ICMP/IGMP đưa vào Socket thô sau hệ điều hành xử lý xong gói tin ICMP Các gói tin IP với trường giao thức không xử lý hệ điều hành đưa vào Socket thô Nếu gói tin bị phân mảnh gói tin đưa vào Socket thô mạng tập hợp ghép mảnh đủ Nhận liệu với Socket thô (2)  Điều kiện để socket thô nhận packet  Nếu tham số protocol thiết lập khởi tạo socket, có gói tin có trường giao thức đưa vào socket  Nếu hàm bind() gọi socket thô, có gói tin có đích đến địa IP gán đưa vào socket  Nếu hàm connect() sử dụng, có gói tin gửi từ địa định đưa vào socket main function  ping/main.c  Lấy thông tin địa đích từ command line readloop function  ping/readloop.c  Tạo socket  Thiết lập kích thước đệm nhận socket  Gửi gói tin ICMP đầu tiến  Thực lặp vô hạn để nhận gói tin ICMP tv_sub function: tính hiệu thời gian  lib/tv_sub.c proc_v4 function: xử lý thông báo ICMPv4  ping/proc_v4.c  Lấy trỏ trỏ đến ICMP header  Kiểm tra ICMP echo reply  Xuất tất thông báo ICMP nhận tùy biến verbose thiết lập sig_alrm function: SIGALRM signal handler  ping/sig_alrm.c send_v4 function: builds an ICMPv4 echo request message and sends it  ping/send_v4.c  Tạo thông báo ICMPv4  Tính toán ICMP checksum  Gửi gói tin in_cksum function: Tính toán Internet checksum  libfree/in_cksum.c Chương trình traceroute  Gửi gói tin UDP đến địa đích với trường TTL (hay hop limit) gán n  Nhận gói tin ICMP với lỗi "time exceeded in transit" Chương trình main sig_alarm traceloop recv_v4 Gửi gói tin UDP với TTL = n liệu thời gian gửi gói tin tv_sub Nhận gói tin ICMP_TIMXCEED gói tin ICMP_UNREACH tính toán RTT Chương trình  traceroute/trace.h main function  traceroute/main.c traceloop function: main processing loop  traceroute/traceloop.c recv_v4 function: reads and processes ICMPv4 messages  traceroute/recv_v4.c sig_alrm function  traceroute/sig_alrm.c Trả chuỗi ký tự tương ứng với mã ICMPv6 unreachable  traceroute/icmpcode_v4.c [...]... processing loop  traceroute/traceloop.c recv_v4 function: reads and processes ICMPv4 messages  traceroute/recv_v4.c sig_alrm function  traceroute/sig_alrm.c Trả về chuỗi ký tự tương ứng với mã ICMPv6 unreachable  traceroute/icmpcode_v4.c ... sockfd = socket(AF_INET, SOCK _RAW, protocol);   gán SOCK _RAW cho tham số thứ hai khởi tạo socket tham số protocol số định nghĩa IPPROTO_xxx  E.g IPPROTO_ICMP, IPPROTO _RAW Thiết lập tùy biến IP_HDRINCL... muốn viết chương trình cho định tuyến   Nhưng xử lý gói tin ICMPv4, IGMPv4 ICMPv6 với TCP/UDP sockets Nhưng xử lý gói tin OSPF nào? Chúng ta muốn công vào máy tính với gói tin giả mạo  Chúng

Ngày đăng: 22/12/2016, 13:11

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan