Bagikan melalui


opsi soket IPPROTO_TCP

Tabel berikut ini menjelaskan opsi soket IPPROTO_TCP yang berlaku untuk soket yang dibuat untuk keluarga alamat IPv4 dan IPv6 (AF_INET dan AF_INET6) dengan parameter protokol ke fungsi soket yang ditentukan sebagai TCP (IPPROTO_TCP). Lihat halaman referensi fungsi getsockopt dan setsockopt untuk informasi selengkapnya tentang mendapatkan dan mengatur opsi soket.

Untuk menghitung protokol dan menemukan properti yang didukung untuk setiap protokol yang diinstal, gunakan fungsi WSAEnumProtocols, WSCEnumProtocols, atau WSCEnumProtocols32.

Opsi

Opsi Dapatkan Set Jenis optval Deskripsi
TCP_BSDURGENT yes yes DWORD (Boolean) Jika TRUE, penyedia layanan mengimplementasikan gaya Berkeley Software Distribution (BSD) (default) untuk menangani data yang dipercepat. Opsi ini adalah inversi dari opsi TCP_EXPEDITED_1122. Opsi ini dapat diatur pada koneksi hanya sekali. Setelah opsi ini diatur, opsi ini tidak dapat dinonaktifkan. Opsi ini tidak diperlukan untuk diterapkan oleh penyedia layanan. Opsi diaktifkan (diatur ke TRUE) secara default.
TCP_EXPEDITED_1122 yes yes DWORD (Boolean) Jika TRUE, penyedia layanan mengimplementasikan data yang dipercepat seperti yang ditentukan dalam RFC-1222. Jika tidak, gaya Distribusi Perangkat Lunak Berkeley (BSD) (default) digunakan. Opsi ini dapat diatur pada koneksi hanya sekali. Setelah opsi ini diatur, opsi ini tidak dapat dinonaktifkan. Opsi ini tidak diperlukan untuk diterapkan oleh penyedia layanan.
TCP_FAIL_CONNECT_ON_ICMP_ERROR yes yes DWORD (Boolean) Jika TRUE, panggilan API koneksi akan kembali setelah penerimaan kesalahan ICMP dengan nilai WSAEHOSTUNREACH. Alamat sumber kesalahan kemudian akan tersedia melalui opsi soket TCP_ICMP_ERROR_INFO. Jika FALSE, soket berulah secara normal. Default dinonaktifkan (diatur ke FALSE). Untuk keamanan tipe, Anda harus menggunakan fungsi WSAGetFailConnectOnIcmpError dan WSASetFailConnectOnIcmpError alih-alih menggunakan opsi soket secara langsung.
TCP_ICMP_ERROR_INFO yes no ICMP_ERROR_INFO Mengambil info kesalahan ICMP yang diterima oleh soket TCP selama panggilan koneksi yang gagal. Hanya berlaku pada soket TCP di mana TCP_FAIL_CONNECT_ON_ICMP_ERROR sebelumnya telah diaktifkan, dan koneksi telah mengembalikan WSAEHOSTUNREACH. Kueri tidak memblokir. Jika berhasil dikueri dan nilai optlen yang dikembalikan adalah 0, maka tidak ada kesalahan ICMP yang diterima sejak panggilan koneksi terakhir. Jika kesalahan ICMP diterima, infonya akan tersedia sampai koneksi dipanggil lagi. Info dikembalikan sebagai struktur ICMP_ERROR_INFO . Untuk keamanan jenis, Anda harus menggunakan fungsi WSAGetIcmpErrorInfo alih-alih menggunakan opsi soket secara langsung.
TCP_KEEPCNT yes yes DWORD Mendapatkan atau mengatur jumlah pemeriksaan tetap hidup TCP yang akan dikirim sebelum koneksi dihentikan. Adalah ilegal untuk mengatur TCP_KEEPCNT ke nilai yang lebih besar dari 255.
TCP_MAXRT yes yes DWORD Jika nilai ini non-negatif, nilai ini mewakili batas waktu koneksi yang diinginkan dalam hitungan detik. Jika -1, ini mewakili permintaan untuk menonaktifkan batas waktu koneksi (yaitu koneksi akan dikirim ulang selamanya). Jika batas waktu koneksi dinonaktifkan, batas waktu pengiriman ulang meningkat secara eksponensial untuk setiap transmisi ulang hingga nilai maksimum 60 detik dan kemudian tetap berada di sana.
TCP_NODELAY yes yes DWORD (Boolean) Mengaktifkan atau menonaktifkan algoritma Nagle untuk soket TCP. Opsi ini dinonaktifkan (diatur ke FALSE) secara default.
TCP_TIMESTAMPS yes yes DWORD (Boolean) Mengaktifkan atau menonaktifkan stempel waktu RFC 1323. Perhatikan bahwa ada juga konfigurasi global untuk tanda waktu (default nonaktif), "Tanda waktu" di (set/get)-nettcpsetting. Mengatur opsi soket ini akan mengambil alih pengaturan konfigurasi global tersebut.
TCP_FASTOPEN yes yes DWORD (Boolean) Mengaktifkan atau menonaktifkan RFC 7413 TCP Fast Open, yang memungkinkan Anda untuk mulai mengirim data selama fase jabat tangan tiga arah untuk membuka koneksi. Perhatikan bahwa untuk menggunakan buka cepat, Anda harus menggunakan ConnectEx untuk membuat koneksi awal, dan menentukan data dalam parameter lpSendBuffer fungsi tersebut untuk ditransfer selama proses jabat tangan. Beberapa data di lpSendBuffer akan ditransfer di bawah protokol Buka Cepat.
TCP_KEEPIDLE yes yes DWORD Mendapatkan atau mengatur jumlah detik koneksi TCP akan tetap menganggur sebelum pemeriksaan keepalive dikirim ke jarak jauh.

Catatan:
Opsi ini tersedia dimulai dengan Windows 10, versi 1709.


TCP_KEEPINTVL yes yes DWORD Mendapatkan atau mengatur jumlah detik koneksi TCP akan menunggu respons keepalive sebelum mengirim pemeriksaan keepalive lainnya.

Catatan:
Opsi ini tersedia dimulai dengan Windows 10, versi 1709.


Dukungan Windows untuk opsi IPPROTO_TCP

Opsi Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT yes yes yes yes
TCP_EXPEDITED_1122 yes yes yes yes
TCP_KEEPCNT Dimulai dengan Windows 10, versi 1703
TCP_MAXRT yes yes yes yes
TCP_NODELAY yes yes yes yes
TCP_TIMESTAMPS yes yes yes yes
TCP_FASTOPEN Dimulai dengan Windows 10, versi 1607

  Opsi Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/Me
TCP_BSDURGENT yes yes yes yes
TCP_EXPEDITED_1122 yes yes yes
TCP_KEEPCNT
TCP_MAXRT
TCP_NODELAY yes yes yes yes
TCP_TIMESTAMPS
TCP_FASTOPEN

Keterangan

Dalam Microsoft Windows Software Development Kit (SDK) yang dirilis untuk Windows Vista dan yang lebih baru, organisasi file header telah berubah dan tingkat IPPROTO_TCP ditentukan dalam file header Ws2def.h yang secara otomatis disertakan dalam file header Winsock2.h . Opsi soket IPPROTO_TCP , dengan pengecualian TCP_BSDURGENT, didefinisikan dalam file header Ws2ipdef.h yang secara otomatis disertakan dalam file header Ws2tcpip.h . Opsi TCP_BSDURGENT karena alasan historis didefinisikan dalam file header Mswsock.h . File header Ws2def.h dan Ws2ipdef.h tidak boleh digunakan secara langsung.

Persyaratan

Persyaratan Nilai
Header
Ws2def.h (termasuk Winsock2.h);
Winsock2.h di Windows Server 2003, Windows XP dan Windows 2000