Berbagi teknologi

pemrograman jaringan python-TCP/IP

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

lapisan tautan

Komposisi bingkai (berurutan):

Target MAC: 6B

Sumber MAC: 6B

Jenis: 2B

Data: 46B-1500B

CRC: 4B

Diantaranya, MAC sumber adalah alamat kartu jaringan host, tipenya adalah tipe data lapisan jaringan sumber, ipv4 adalah 0800, arp adalah 0806, pppoe adalah 8864, 1qtag adalah 8100, ipv6 adalah 86dd

Python dapat memperoleh alamat mac asli melalui modul uuid

Lapisan jaringan

Struktur datagram

Header: 20-60B, 20B pertama wajib diisi dan 40B terakhir bersifat opsional.

Data: 0-65516B

struktur tajuk

Versi: 4 digit, menunjukkan ipv4 atau ipv6

ihl: 4 bit, menunjukkan panjang header, satuannya 4B, jadi maksimumnya adalah 4x15=60B, yang persis dengan panjang maksimum header

ds: layanan terdiferensiasi, 8 bit, tiga bit pertama menunjukkan prioritas, empat bit berikutnya menunjukkan penundaan minimum, throughput maksimum, keandalan tertinggi dan biaya minimum, bit terakhir tidak digunakan

Panjang total: 16 bit, menunjukkan total panjang header dan data, di B.Perhatikan bahwa panjang data lapisan tautan adalah 46-1500. Ketika datagram lapisan jaringan kurang dari 46B, data akan diisi.

Identifikasi: 16 bit, menunjukkan id unik dari data yang terfragmentasi

Bendera: 3 bit, bit tertinggi adalah bit yang dicadangkan, bit kedua menunjukkan apakah dapat terfragmentasi, 0 berarti dapat terfragmentasi, 1 berarti tidak dapat terfragmentasi, bit terakhir menunjukkan apakah datagram terfragmentasi, 0 berarti tidak terfragmentasi, Dan itu adalah fragmen terakhir, 1 berarti fragmen, dan ada fragmen setelahnya

Perpindahan fragmen: 13 bit, 8B

Seumur hidup, 8 bit, maksimum 255, menunjukkan jumlah maksimum hop dalam rute

Protokol: 8 bit, menunjukkan tipe datagram ip, seperti ICMP, IGMP, TCP, UDP, dll.

Checksum tajuk: 16 bit

Alamat IP sumber dan alamat IP tujuan, masing-masing 32 bit

Python dapat memperoleh informasi jaringan melalui dua modul psutil dan netifaces. Versi netifacce sudah usang.

lapisan transportasi

udp

Keterjangkauan data tidak dijamin

Header 8B: port sumber 2B, port tujuan 2B, panjang 2B, checksum 2B

Data 0-65527B

TCP

Jabat tangan 3 arah untuk membuat koneksi, jabat tangan 4 arah untuk menutup koneksi

Struktur datagram

Bagian pertama 20-60B

Data 0-65535B

struktur tajuk

Port sumber 16 bit

Port tujuan 16 bit

Nomor seri: 32 bit: Setiap byte data memiliki nomor urut,Setelah mencapai pow(2,32), dimulai dari 0

Nomor konfirmasi: 32 bit. Penerima mengirimkan nomor urut byte pertama dari pesan data berikutnya ke pengirim. Misalnya, jika pengirim mengirim 0-999 byte, nomor konfirmasi yang dikirim oleh penerima adalah 1000.

Offset data: 4 bit, unit bit 4B, mirip dengan ihl header ipv4

Dicadangkan: 6 bit, biasanya 0

URG: 1 bit, 1 menunjukkan data mendesak, penunjuk mendesak valid

ACK : 1 bit, 1 berarti field nomor konfirmasi valid

PSH: 1 bit, 1 berarti pesan dibuat dan segera dikirim. Pihak penerima akan segera menyerahkannya ke proses setelah menerimanya, alih-alih memasukkannya ke dalam cache dan menunggu hingga cache penuh sebelum dikirimkan.

RST: 1 bit. Jika 1, berarti ada masalah serius dengan koneksi saat ini. Xu Ao akan melepaskan koneksi dan membuat ulang koneksi menolak untuk membuka koneksi ilegal.

SYN: 1 bit, 1 menunjukkan bahwa pesan tersebut adalah permintaan koneksi atau pesan penerimaan koneksi

FIN: 1 bit, 1 menunjukkan bahwa data telah terkirim dan koneksi harus dilepaskan.

Window: 16 bit, dikirim oleh penerima ke pengirim, menunjukkan panjang pesan berikutnya yang diharapkan diterima

Checksum: 16 bit

Penunjuk mendesak: 16 bit. Ketika URG adalah 1, ini menunjukkan posisi akhir data penting.

Python mendapat informasi jaringan

psutil dapat memperoleh beberapa statistik jaringan. Metode net_io_counters mengumpulkan statistik jaringan seluruh mesin secara default. Memasukkan parameter pernic=True akan mengumpulkan statistik setiap kartu jaringan secara terpisah.

Lapisan aplikasi

http

HTTP adalah komunikasi tanpa kewarganegaraan secara default, dan layanan berstatus dapat dilakukan melalui cookie.

port http umumnya 80

Struktur pesan

Pesan permintaan: metode, url, versi, kolom header lainnya, entitas pesan (opsional)

Pesan respons: versi, kode status, frasa, kolom header lainnya, entitas pesan (opsional)

Metode: Ada 8 tipe, get, post, head, put, delete, option, connect, trace

Versi: nomor versi http

Bidang tajuk lainnya: seperti Kontrol-Cache, Pengkodean-Terima, dll.

Entitas pesan: tidak ada batasan panjangnya, bisa 0

Kode status: 404, tiga digit.1xx menunjukkan bahwa server telah menerima permintaan, 2xx menunjukkan bahwa server menerima permintaan klien, 3xx menunjukkan bahwa server mengalihkan permintaan klien, 4xx menunjukkan bahwa permintaan klien salah, dan 5xx menunjukkan bahwa ada masalah dengan server .

Frase: Mengomentari kode status. Misalnya, frasa yang sesuai dengan kode pengembalian 202 adalah Terima, dan frasa yang sesuai dengan kode pengembalian 404 adalah Not Fount.

https

http tidak memiliki jaminan keamanan dan dapat ditangkap. https menggunakan SSL atau TLS untuk mengenkripsi paket data dan kemudian mengirimkannya melalui TCP443

Enkripsi simetris dan enkripsi asimetris umumnya digunakan. Enkripsi simetris umumnya digunakan untuk enkripsi pesan, dan enkripsi asimetris umumnya digunakan untuk enkripsi kata sandi.

Proses permintaan

Ketika klien meminta, ia akan mengirimkan seperangkat aturan enkripsi yang didukungnya ke server.

Server menggabungkan serangkaian algoritma enkripsi dan hash berdasarkan aturan enkripsi klien, dan mengembalikannya ke klien dalam bentuk sertifikat digital bersama dengan informasi identitasnya sendiri.

Klien memverifikasi validitas sertifikat server, membuat kata sandi nomor acak setelah meneruskannya, dan mengenkripsi kata sandi nomor acak dengan kunci publik server.Klien menghitung hash dari pesan yang akan dikirim, mengenkripsi pesan yang akan dikirim dan nilai hash pesan dengan kata sandi nomor acak, dan terakhir mengenkripsi kunci publik server dengan kata sandi nomor acak, dan pesan serta pesan dienkripsi dengan kata sandi nomor acak di-hash bersama-sama

Setelah menerima data klien, server menggunakan kunci pribadinya sendiri untuk mendekripsi kata sandi nomor acak, kemudian menggunakan kata sandi nomor acak untuk mendekripsi pesan dan nilai hash pesan, dan membandingkan nilai hash yang didekripsi dengan nilai hash pesan yang diterima. untuk melihat apakah itu konsisten. Jika konsisten, koneksi antara klien dan server berhasil dibuat. Setelah itu, kedua belah pihak menggunakan kata sandi nomor acak untuk mengenkripsi dan mendekripsi data.Selama transmisi data berikutnya, jika terjadi kesalahan atau hash tidak konsisten, koneksi akan dihentikan secara otomatis.

ftp

alamat IP

snmp

snmp protokol transfer surat sederhana, digunakan untuk mentransfer surat dari alamat sumber ke alamat tujuan, port umumnya 25

Ini adalah protokol pengiriman email yang umum digunakan. Setelah mengirim email, email akan dikirim ke server snmp.

lagu pop3

Penerima digunakan untuk menerima email yang dikirim ke dirinya sendiri oleh pengguna lain dari servernya sendiri. Portnya biasanya 110.

pop3 adalah protokol offline. Saat pengguna login, email dari server pop3 akan diunduh ke area lokal sekaligus.

imap adalah protokol penerimaan email online, yang mengatasi masalah offline pop3. Saat ini protokol penerimaan email yang paling umum digunakan. Portnya umumnya 143.

layanan dhcp

Ketika klien dengan dhcp terhubung ke jaringan, ia akan menyiarkan pesan dhcp disocover Setelah sejumlah siaran terbatas sesuai aturan tertentu, jika tidak ada respons yang diterima, dhcp akan gagal.

Setelah menerima pesan tersebut, server akan memilih IP dari kumpulan alamat yang tersedia, mengirimkan pesan penawaran dhcp dalam bentuk siaran, dan mengembalikan IP tersebut ke klien.

Setelah klien menerima IP yang diberikan oleh server dhcp, ia akan mengirimkan permintaan arp untuk melihat apakah IP sudah terisi, klien akan mengirimkan laporan penolakan dhcp ke server dhcp. itu akan mengirimkan permintaan dhcp ke server. Setelah menerimanya, server akan mengirimkan respons ack dhcp ke klien. Pada titik ini, proses layanan dhcp berakhir.

Port server dhcp umumnya 67, dan port klien dhcp umumnya 68. dhcp menggunakan komunikasi udp.