คำถามติดแท็ก tcp

Transport Control Protocol (TCP) เป็นส่วนต่ำของโปรโตคอลสแต็กที่ใช้โดยอินเทอร์เน็ต มันตั้งอยู่เหนือ IP เลเยอร์โดยตรงและมีหน้าที่รับผิดชอบในการทำให้แน่ใจว่าแพ็กเก็ตที่ถูกทิ้งนั้นส่งใหม่

1
เหตุใด Linux จึงไม่ใช้ช่วงพอร์ตชั่วคราวของ IANA
ตามที่ Wikipedia ผู้ให้บริการอินเทอร์เน็ตกำหนดหมายเลข (IANA) แนะนำช่วง 49152 ถึง 65535 สำหรับพอร์ตแบบไดนามิกหรือส่วนตัว เคอร์เนล Linux หลายตัวใช้ช่วงพอร์ต 32768 ถึง 61000 แม้ว่าจะมีการเบี่ยงเบนทางประวัติศาสตร์บางส่วนจากช่วงที่ IANA แนะนำ แต่ก็น่าแปลกใจที่ Windows Vista, Windows 7, Windows Server 2008, FreeBSD 4.6+ และอื่น ๆ อีกมากมายที่เห็นด้วยกับช่วงนี้และ Linux ยังโดดเด่น มองเข้าไปในนั้นดูและดูเถิด: $ cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 ทำไมลินุกซ์ถึงไม่ใช้ช่วงมาตรฐาน?
30 linux  ip  tcp 

2
การเชื่อมต่อที่ไม่ได้ใช้งานในสถานะ CLOSE_WAIT
ฉันมีเครื่อง SLES ที่สะสมการเชื่อมต่อ TCP ในสถานะ CLOSE_WAIT สำหรับสิ่งที่ดูเหมือนจะเป็นตลอดไป ตัวอธิบายเหล่านี้ดูดหน่วยความจำที่มีอยู่ทั้งหมดในที่สุด ในขณะนี้ฉันมี 3037 ของพวกเขา แต่มันสูงกว่ามากก่อนที่จะรีบูตเครื่องเร็ว ๆ นี้ สิ่งที่น่าสนใจคือพวกเขาไม่ได้มาจากการเชื่อมต่อไปยังพอร์ตท้องถิ่นที่ฉันคาดว่าจะมีกระบวนการฟัง พวกเขาไม่มี PID ที่เกี่ยวข้องและตัวจับเวลาดูเหมือนว่าจะหมดอายุแล้ว # netstat -ton | grep CLOSE_WAIT tcp 176 0 10.0.0.60:54882 10.0.0.12:31663 CLOSE_WAIT off (0.00/0/0) tcp 54 0 10.0.0.60:60957 10.0.0.12:4503 CLOSE_WAIT off (0.00/0/0) tcp 89 0 10.0.0.60:50959 10.0.0.12:3518 CLOSE_WAIT off (0.00/0/0) # netstat …
30 linux  networking  tcp 

1
เหตุใดการเชื่อมต่อ IPv4 TCP จึงแสดงเป็น tcp6
นี่คือผลลัพธ์ของnetsat -tupnบนเซิร์ฟเวอร์ Debian Jessie ของฉัน: Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 10.0.0.12:445 10.0.0.20:49729 ESTABLISHED 26277/smbd tcp 0 0 10.0.0.12:443 10.0.0.21:44162 ESTABLISHED 1400/nginx: worker tcp 0 0 10.0.0.12:445 10.0.0.21:46650 ESTABLISHED 23039/smbd tcp 0 0 10.0.0.12:443 10.0.0.20:54584 ESTABLISHED 1400/nginx: worker …
30 networking  tcp 

3
ฉันจะจองพอร์ตสำหรับแอปพลิเคชันของฉันได้อย่างไร
ฉันจะจองรายการพอร์ตสำหรับแอปพลิเคชันที่กำหนดเองได้อย่างไร ความเฉพาะเจาะจงผลิตภัณฑ์ที่ฉันสร้างมีกระบวนการมากมายและการสื่อสารระหว่างกันมากมาย ปัญหาที่ฉันมีคือทุกครั้งที่ระบบปฏิบัติการขโมยพอร์ตของฉัน มันหายาก แต่มันเกิดขึ้น อาจเป็นเพราะแอปพลิเคชันอื่นใช้ ":: bind" โดยไม่ได้ระบุพอร์ต หรือบางครั้งแอปพลิเคชันของฉันเองขโมยพอร์ตเมื่อฉันเรียกว่า ":: connect" ด้วยซ็อกเก็ตที่ไม่ได้ผูกไว้ เท่าที่เห็นจากหน้าคน: หากซ็อกเก็ตยังไม่ได้ถูกผูกไว้กับที่อยู่ในท้องถิ่นเชื่อมต่อ () จะผูกไว้กับที่อยู่ซึ่งเว้นแต่ครอบครัวที่อยู่ของซ็อกเก็ตคือ AF_UNIX เป็นที่อยู่ในท้องถิ่นที่ไม่ได้ใช้ ดังนั้นคำถามของฉันคือฉันสามารถจองพอร์ตที่ฉันต้องการเพื่อให้ระบบปฏิบัติการไม่ได้ใช้งานได้หรือไม่? สามารถทำได้ด้วย / etc / services หรือไม่ หรือมีวิธีที่แตกต่างกันอย่างไร
29 tcp  udp  socket 

6
วิธีการตรวจสอบว่าไฟร์วอลล์เปิดสำหรับพอร์ต แต่ไม่ฟังพอร์ต
เราจะปรับใช้แอปพลิเคชันใหม่ไปยังเซิร์ฟเวอร์และแอปพลิเคชันจะรับฟังพอร์ต 8443 เราได้ขอให้ทีมเครือข่ายเปิดไฟร์วอลล์สำหรับพอร์ต 8443 บนเซิร์ฟเวอร์นั้นก่อนที่จะปรับใช้แอปพลิเคชัน ไม่มีแอปพลิเคชันที่กำลังฟังพอร์ตเฉพาะบนเซิร์ฟเวอร์ในขณะนี้ มีอยู่แล้วฉันสามารถตรวจสอบให้แน่ใจว่ามีการเปิดไฟร์วอลล์สำหรับพอร์ต 8443 ระบบปฏิบัติการ: Linux / Windows

1
เหตุใดจึงใช้เวลาหลายนาทีในการทำความสะอาดพอร์ต TCP ที่รับฟังหลังจากที่โปรแกรมหยุดทำงาน
ถ้าฉันฆ่าโปรแกรมที่กำลังฟังพอร์ต TCP จะใช้เวลานานหลายนาทีจนกว่าระบบจะเรียกคืนพอร์ตโดยใช้งานได้อีกครั้ง ฉันเคยเห็นคำถามหลายข้อเกี่ยวกับปรากฏการณ์นี้ แต่ไม่มีคำอธิบาย เหตุใดจึงเกิดขึ้นทำไมระบบไม่เรียกคืนพอร์ตทันที มันเกิดขึ้นกับระบบอื่นเช่น Windows หรือ Mac หรือไม่

4
เซิร์ฟเวอร์ค้นหาว่าพอร์ตลูกค้าใดที่จะส่งไป?
ตามที่ฉันเข้าใจแล้วนี่เป็นสิ่งที่เกิดขึ้นเมื่อไคลเอนต์ทำการร้องขอการเชื่อมต่อ: เซิร์ฟเวอร์จะถูกผูกไว้กับหมายเลขพอร์ตเฉพาะ หมายเลขพอร์ตนั้นจะเชื่อมโยงกับกระบวนการรับฟังเสมอ เนื่องจากมีเพียงเซิร์ฟเวอร์เท่านั้นที่กำลังรับฟังการเชื่อมต่อขาเข้าเราจึงไม่จำเป็นต้องเชื่อมโยงฝั่งไคลเอ็นต์ เซิร์ฟเวอร์จะคอยฟังหมายเลขพอร์ตนั้นต่อไป ลูกค้าจะส่งconnect()คำขอ accept()เซิร์ฟเวอร์จะยอมรับคำขอใช้ ทันทีที่เซิร์ฟเวอร์ยอมรับคำขอของลูกค้าเคอร์เนลจะจัดสรรหมายเลขพอร์ตแบบสุ่มสำหรับเซิร์ฟเวอร์เพิ่มเติมsend()และreceive()เนื่องจากหมายเลขพอร์ตเดียวกันบนเซิร์ฟเวอร์ไม่สามารถใช้สำหรับการส่งและฟังได้และพอร์ตก่อนหน้ายังคงอยู่ กำลังฟังการเชื่อมต่อใหม่ จากทั้งหมดนั้นเซิร์ฟเวอร์จะหาพอร์ตที่ไคลเอ็นต์ได้รับอย่างไร ฉันรู้ว่าไคลเอนต์จะส่งเซกเมนต์ TCP พร้อมพอร์ตต้นทางและพอร์ตปลายทางดังนั้นเซิร์ฟเวอร์จะใช้พอร์ตต้นทางของเซ็กเมนต์นั้นเป็นพอร์ตปลายทาง แต่เซิร์ฟเวอร์เรียกใช้ฟังก์ชันใดเพื่อค้นหาข้อมูลเกี่ยวกับพอร์ตนั้น มันคือaccept()อะไร
26 tcp  socket 

3
วิธีที่รวดเร็วในการคัดลอกไฟล์ขนาดใหญ่บน LAN
ฉันมีปัญหากับ NFS และฉันต้องการลองใช้ TCP แบบเก่าธรรมดา ฉันไม่รู้ว่าจะเริ่มจากตรงไหน ฉลาดหลักแหลมฉันใช้สายเคเบิลอีเธอร์เน็ตข้ามเครือข่ายสองเน็ตบุ๊ค เพื่อเครือข่ายพวกเขาฉันพิมพ์ $ sudo ifconfig eth0 192.168.1.1 up && ping -c 10 -s 10 192.168.1.2 && sudo /etc/init.d/nfs-kernel-server start ในเน็ตบุ๊กแรกและ $ sudo ifconfig eth0 192.168.1.2 up $ ping -c 10 -s 10 192.168.1.1 $ mount /mnt/network1 ในวินาที โดยที่/mnt/network1ระบุไว้ใน / etc / fstab เป็น 192.168.1.1:/home …

4
บันทึกการเชื่อมต่อขาออกเมื่อเกิดขึ้น
มีวิธีบันทึกการเชื่อมต่อขาออกทั้งหมดที่กระบวนการสร้างขึ้นหรือไม่ ฉันรู้netstatแต่ดูเหมือนว่าจะเป็นภาพรวมของจุดในเวลามากกว่าสิ่งที่ทำงานและบันทึกข้อมูลในช่วงเวลา ฉันต้องการเฉพาะ IP หรือชื่อโฮสต์พอร์ตและกระบวนการเชื่อมต่อ
23 tcp  netstat 

3
tcp6 ในเอาต์พุต netstat
คอลัมน์ 'tcp6' หมายถึงอะไรในเอาต์พุต netstat ใครก็ได้โปรดอธิบายผลลัพธ์ต่อไปนี้ของ netstat: tcp6 0 0 dmz.local.net:www 5.140.235.6%14631:49964 ESTABLISHED 21393/apache2 อะไรtcp6หมายความว่าอย่างไร
23 tcp  netstat 


1
/ dev / tcp ไม่พบ
เมื่อฉันพยายามเรียกใช้คำสั่งต่อไปนี้: echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80 ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: bash: /dev/tcp/74.125.225.19/80: No such file or directory คำสั่งต่อไปนี้ทำงานได้อย่างสมบูรณ์ดังนั้นปัญหาเกี่ยวข้องกับวิธีที่ฉันใช้/dev/tcp: echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80 ฉันอยู่ใน Ubuntu 13.04 ดังนั้นความสามารถควรอยู่ในระบบของฉัน ผมทำอะไรผิดหรือเปล่า? กฎการใช้งาน/dev/tcpอย่างเหมาะสมมีอะไรบ้าง
21 bash  tcp 

1
ฉันจะกำหนดค่าการเชื่อมต่อ SSH แบบย้อนกลับกับคอมพิวเตอร์ที่เชื่อมต่อได้อย่างไร
ฉันจะปรับใช้เครื่องจักรจำนวนมากในอนาคตอันใกล้ซึ่งจะอยู่หลังเราเตอร์ การตั้งค่า DNS แบบไดนามิกในแต่ละเราเตอร์และการส่งต่อพอร์ตเป็นไปไม่ได้ดังนั้นจะมีวิธีที่ฉันสามารถกำหนดค่าเครื่องเหล่านี้เพื่อเริ่มต้นการเชื่อมต่อ TCP กับคอมพิวเตอร์ของฉันแล้วให้คอมพิวเตอร์เริ่มการเชื่อมต่อ SSH กับคอมพิวเตอร์ระยะไกล การเชื่อมต่อนั้น? IE: COMPUTER A OPENS TCP CONNECTION TO COMPUTER B COMPUTER B OPENS SSH CONNECTION OVER THE EXISTING TCP CONNECTION TO COMPUTER A COMPUTER B NOW HAS SSH CONNECTION TO COMPUTER A เป็นไปได้และถ้าเป็นเช่นนั้นฉันจะทำอย่างไร
20 ssh  tcp 


3
nmap สามารถแสดงเฉพาะโฮสต์ที่เปิดพอร์ตเฉพาะได้หรือไม่
สามารถnmapแสดงรายการโฮสต์ทั้งหมดในเครือข่ายท้องถิ่นที่เปิดทั้ง SSH และ HTTP ได้หรือไม่ หากต้องการทำเช่นนั้นฉันสามารถใช้งานสิ่งต่อไปนี้: nmap 192.168.1.1-254 -p22,80 --open อย่างไรก็ตามรายการนี้โฮสต์ที่เปิดพอร์ตรายการใด ๆ ในขณะที่ฉันต้องการโฮสต์ที่เปิดพอร์ตทั้งหมด นอกจากนี้เอาต์พุตค่อนข้างละเอียด: # nmap 192.168.1.1-254 -p22,80 --open Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-31 10:14 EST Nmap scan report for Wireless_Broadband_Router.home (192.168.1.1) Host is up (0.0016s latency). Not shown: 1 closed port PORT STATE SERVICE 80/tcp open …
18 ip  tcp  scanner  nmap 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.