Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 11671|Jawab: 1

Content-Length protokol Http

[Salin tautan]
Dipaparkan pada 2019-9-24 16:43:20 | | | |
kata pengantar

Protokol HTTP adalah salah satu protokol terpenting di Internet, meskipun kelihatannya sederhana, tetapi dalam praktiknya sering mengalami masalah, dan kami telah menghadapinya beberapa kali. Ada koneksi panjang dan penguraian paket. Anda tidak dapat mengetahui apa-apa tentang protokol HTTP, Anda harus memahaminya secara menyeluruh. Jadi saya menulis seri ini untuk berbagi masalah dan pengalaman protokol HTTP.



Protokol HTTP memiliki header dan isi untuk paket permintaan dan balasan, dan isi adalah sumber daya yang ingin Anda dapatkan, seperti halaman html, gambar jpeg, dan header digunakan untuk membuat konvensi tertentu. Misalnya, klien dan server menyetujui beberapa format transmisi, dan klien pertama-tama mendapatkan header, mengetahui beberapa informasi format, dan kemudian mulai membaca isi.

Klien: Accept-Encoding:gzip (kompres untuk saya, saya menggunakan lalu lintas, unduh dulu dan kemudian perlahan-lahan unzip)

Server 1: Pengkodean Konten: null (Tidak ada header Pengkodean Konten.) Saya tidak memberikan kompresi, CPU tidak gratis, apakah Anda menginginkannya)

Server 2: Content-Encoding:gzip (simpan lalu lintas untuk Anda, kompres)
Klien: Koneksi: tetap hidup (Kakak, kami akhirnya membangun koneksi TCP, kami akan menggunakannya lain kali)

Server 1: Koneksi: tetap hidup (tidak mudah, terus gunakan)

Server 2: Koneksi: tutup (Siapa pun yang terus menggunakannya dengan Anda, TCP kami satu kali, dan kami harus terhubung kembali saat kami menemukannya)
Protokol HTTP tidak memiliki tiga jabat tangan, dan ketika klien meminta sumber daya dari server, sisi server akan berlaku. Ada juga beberapa header yang tidak memiliki proses negosiasi, tetapi server langsung memberi tahu klien apa yang harus dilakukan. Misalnya, Content-Length di atas adalah apa yang server katakan kepada klien seberapa besar tubuhnya. Tapi! Server mungkin tidak dapat memberi tahu Anda dengan tepat seberapa besar tubuh sebelumnya. Server perlu menulis header terlebih dahulu, dan kemudian body, jika Anda ingin menulis case body di header, Anda harus mengetahui ukuran body terlebih dahulu. Jika isi dihasilkan secara dinamis, server akan selesai dan kemudian mulai menulis header, yang membutuhkan banyak overhead tambahan, sehingga mungkin tidak ada panjang konten di header.

Jadi bagaimana klien mengetahui ukuran tubuh? Server memberi tahu Anda dalam tiga cara.


1. Server sudah mengetahui ukuran sumber daya dan memberi tahu Anda melalui header panjang konten.

Content-Length:1076(body的大小是1076B,你读取1076B就可以完成任务了)

Transfer-Encoding: null


2. Server tidak dapat mengetahui ukuran sumber daya terlebih dahulu, atau tidak mau menghabiskan sumber daya untuk menghitung ukuran sumber daya terlebih dahulu, sehingga akan menambahkan header ke pesan balasan http yang disebut Transfer-Encoding:chunked, yang berarti transfer blok. Setiap blok menggunakan format tetap, dengan ukuran blok di depan, data di belakangnya, dan kemudian blok terakhir dengan ukuran 0. Dengan cara ini, ketika klien mengurai, ia perlu memperhatikan untuk menghapus beberapa bidang yang tidak berguna.

Content-Length:null

Transfer-Encoding:chunked (接下来的body我要一块一块的传,每一块开始是这一块的大小,等我传到大小为0的块时,就没了)


3. Server tidak mengetahui ukuran sumber daya, dan tidak mendukung mode transmisi yang dipotong-potong, sehingga tidak ada header panjang konten atau header pengkodean transfer. Saat ini, header yang dikembalikan oleh server harus dekat.

Content-Length:null

Transfer-Encoding:null

Connection:close(我不知道大小,我也用不了chunked,啥时候我关了tcp连接,就说明传输结束了)





Mantan:Interpretasi terperinci dari Content-Length dalam protokol HTTP
Depan:Protokol HTTP Transfer-Encoding (dipotong)
Dipaparkan pada 2019-9-24 17:16:57 |
Terima kasih, tuan tanah
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com