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

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

3
ฆ่าบริการใด ๆ ที่ทำงานอยู่ที่พอร์ตเฉพาะ
ฉันพยายามเขียนสคริปต์ที่ฆ่าบริการที่ทำงานที่พอร์ตเฉพาะ นี่คือสคริปต์ของฉัน: a=$(ps ax | grep 4990 | grep java | awk '{print $1}') kill -9 $a มันเป็นโปรแกรมจาวา สคริปต์นี้ใช้งานได้บางครั้ง แต่ล้มเหลวอย่างลึกลับส่วนใหญ่ มีวิธีอื่นในการฆ่าบริการที่ทำงานบนพอร์ตหรือไม่? 4990พอร์ตของฉันคือ
13 process  kill  tcp 

3
หนึ่งจับปริมาณการใช้งานบนอินเตอร์เฟสเสมือนได้อย่างไร
ฉันต้องการจับภาพทราฟฟิกบนอินเตอร์เฟสเสมือนของ Linux เพื่อการดีบัก ฉันได้รับการทดสอบด้วยveth, tunและdummyอินเตอร์เฟซประเภท; ในทั้งสามฉันมีปัญหาในการtcpdumpแสดงอะไร นี่คือวิธีการตั้งค่าส่วนต่อประสานแบบจำลอง: ip link add dummy10 type dummy ip addr add 99.99.99.1 dev dummy10 ip link set dummy10 up ในเทอร์มินัลหนึ่งดูด้วยtcpdump: tcpdump -i dummy10 ในหนึ่งวินาทีให้ฟังด้วยnc: nc -l 99.99.99.1 2048 ในหนึ่งในสามทำการร้องขอ HTTP ด้วยcurl: curl http://99.99.99.1:2048/ แม้ว่าใน terminal 2 เราสามารถดูข้อมูลจากการร้องขอการแสดงอะไรขึ้นมาจากcurltcpdump Tun / แตะกวดวิชาชี้แจงสถานการณ์บางอย่างที่เคอร์เนลอาจไม่ได้ส่งแพ็กเก็ตใด ๆ เมื่อมีการดำเนินงานเกี่ยวกับอินเตอร์เฟซท้องถิ่น: เมื่อดูที่ผลลัพธ์ของ tshark เราจะเห็น …
12 networking  kernel  ip  tcp  tcpdump 

1
tcpdump สแต็กเครือข่ายระดับใดที่ได้รับข้อมูลมา
ขณะที่ผมกำลังพยายามที่ไร้ผลที่จะแก้ไขข้อผิดพลาดของตัวควบคุมอีเธอร์เน็ตที่นี่สิ่งหนึ่งที่ผมพยายามวิ่ง tcpdump บนเครื่อง ฉันพบว่าน่าสนใจที่ tcpdump สามารถตรวจจับได้ว่าแพ็คเก็ต ICMP บางอันที่แอปพลิเคชัน ping คิดว่าการส่งไม่ได้ออกนอกสายจริงแม้ว่ามันจะทำงานบนเครื่องเดียวกันก็ตาม ฉันทำซ้ำผลลัพธ์ tcpdump เหล่านี้ที่นี่: 14:25:01.162331 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 1, length 64 14:25:02.168630 IP debian.local > 74.125.224.80: ICMP echo request, id 2334, seq 2, length 64 14:25:02.228192 IP 74.125.224.80 > debian.local: ICMP echo reply, id …

1
การเปลี่ยนค่า TCP RTO ใน Linux
ฉันต้องการเปลี่ยนค่า TCP RTO (retransmission timeout)สำหรับการเชื่อมต่อและการอ่านบางอย่างที่ฉันทำเสร็จแล้วแสดงให้เห็นว่าฉันสามารถทำได้ แต่ไม่เปิดเผยที่และวิธีการเปลี่ยน ฉันดู/proc/sys/net/ipv4ตัวแปรแล้ว แต่ไม่มีตัวแปรใดที่เกี่ยวข้องกับ RTO ฉันจะขอบคุณถ้ามีคนบอกฉันว่าจะแก้ไขค่านี้ได้อย่างไร

2
โดยไม่ใช้บรรทัดคำสั่งเครือข่ายใน linux จะรู้รายชื่อพอร์ตที่เปิดและกระบวนการที่เป็นเจ้าของได้อย่างไร
ฉันต้องการทราบว่าพอร์ตใดบ้างที่ใช้ในกระบวนการที่ฝังตัวในลินุกซ์ เนื่องจากเป็น Embedded-linux แบบเรียบง่ายจึงไม่มีบรรทัดคำสั่งเครือข่ายเช่น netstat, lsof (มีเพียงบรรทัดคำสั่งพื้นฐานเช่น cat, cp, echo ฯลฯ เท่านั้น) วิธีแก้ปัญหาบางส่วนดูเหมือนจะใช้บรรทัดคำสั่ง "cat / proc / net / tcp" และ "cat / proc / net / udp" อย่างไรก็ตามฉันไม่แน่ใจว่ารายการที่พิมพ์จากบรรทัดคำสั่งเหล่านั้นแสดงพอร์ตทั้งหมดที่ใช้งานอยู่และรายการไม่ได้แสดงว่ากระบวนการใดถูกผูกไว้กับพอร์ตที่แน่นอน ความคิดเห็นใด ๆ ที่จะได้รับการชื่นชม

3
สูตรการพิจารณาจำนวนซ็อกเก็ตหน่วยความจำที่ใช้ภายใต้ Linux คืออะไร
ฉันกำลังวางแผนกำลังการผลิตและฉันสงสัยว่ามีสูตรที่ฉันสามารถใช้ในการทำนาย (จากมุมมองหน่วยความจำ) จำนวนการเชื่อมต่อ TCP ที่ฉันสามารถจัดการกับเซิร์ฟเวอร์ของฉัน ในขณะนี้ฉันแค่กังวลเกี่ยวกับความต้องการของหน่วยความจำเท่านั้น ตัวแปรบางตัวที่ฉันคิดว่าจะปรากฏในสูตรคือ: sysctl's net.ipv4.tcp_wmem(นาทีหรือค่าเริ่มต้น) sysctl's net.ipv4.tcp_rmem(นาทีหรือค่าเริ่มต้น) ขนาดของ sock, sock_common, proto และโครงสร้างข้อมูลต่อซ็อกเก็ตอื่น ๆ ฉันไม่แน่ใจว่ามีการจัดสรร tcp_wmem และ tcp_rmem มากเท่าใดและเมื่อจัดสรรหน่วยความจำแล้ว เมื่อถึงเวลาสร้างซ็อกเก็ต? ตามความต้องการ?
11 linux  memory  tcp 

1
วิธีการตรวจสอบการตั้งค่าแบบสุ่มบนพอร์ตไคลเอนต์ TCP ที่เชื่อมต่อผ่านทางวนกลับไปยังเซิร์ฟเวอร์
ฉันมีชุดทดสอบที่เริ่มต้นเซิร์ฟเวอร์บน localhost แล้วรันการทดสอบหลายพันครั้งซึ่งรวมถึงการเริ่มต้นและหยุดไคลเอ็นต์ที่เชื่อมต่อกับเซิร์ฟเวอร์ในเครื่องนี้ในเครื่องเดียวกัน ฉันพยายามค้นหาสาเหตุของ RST ที่ลูกค้าส่งไปยังเซิร์ฟเวอร์ นี่คือลำดับเหตุการณ์: ไคลเอ็นต์เริ่มต้น SYN เซิร์ฟเวอร์ส่งกลับ SYN, ACK ไคลเอนต์ส่ง RST (แทน ACK และสร้างการเชื่อมต่อ) การสังเกตการณ์หนึ่งครั้งในหลาย ๆ ครั้งเซิร์ฟเวอร์ใช้ CPU ประมาณ 99 เปอร์เซ็นต์แม้ว่ามันจะกลับมาเป็นปกติในไม่กี่วินาที / นาที ตอนแรกฉันคิดว่าอาจเป็นเพราะลูกค้าใช้พอร์ตจากการเชื่อมต่อที่ปิดก่อนหน้านี้ซึ่งอยู่ในสถานะ TIME_WAIT และเมื่อเซิร์ฟเวอร์ส่ง SYN, ACK ในไคลเอ็นต์การเชื่อมต่อนั้นออก RST แม้ว่าฉันจะสงสัยว่าทำไมลูกค้าควรใช้พอร์ตในสถานะ TIME_WAIT แต่ฉันใช้ fedora core 4 แบบเก่าและคิดว่าอาจจะไม่ได้ใช้ TCP / IP :-) ตอนนี้ฉันไม่เชื่อว่าเป็นเหตุผลเพราะการปรับแต่งทั้งหมดที่ทำในการแก้ไขปัญหาข้างต้นไม่ได้ช่วยบรรเทาปัญหา FYI ต่อไปนี้เป็นการเปลี่ยนแปลงที่ฉันได้ลอง/etc/sysctl.conf: net.ipv4.ip_local_port_range = 1024 …
10 fedora  tcp  tcpdump  tcp-ip 

2
เปลี่ยนเส้นทาง stdin และ stdout ไปยังพอร์ต
ฉันต้องการใช้โปรแกรมPที่อ่านจากstdin& เขียนถึงstdoutแต่เชื่อมต่อกับncหรืออะไรก็ตามที่อ่านจากพอร์ตที่แน่นอนและส่งออกไปยังพอร์ตอื่น # The reading is easy, here P reads from port 50505 nc -l 50505 | P ฉันจะทำให้เขียนกลับไปบอกพอร์ต 60606 ได้อย่างไร

1
ระบบเหมือน Unix ใดที่ให้ไฟล์พิเศษ / dev / tcp
ฉันรู้ว่า/dev/tcp/<host>/<port>มันเป็นเวทย์มนตร์ที่จัดการโดยกระสุนบางตัวในการเปลี่ยนเส้นทาง แต่ตามman bash: หากระบบปฏิบัติการที่ใช้ bash นั้นให้ไฟล์พิเศษเหล่านี้ bash จะใช้มัน มิฉะนั้นมันจะเลียนแบบพวกเขาภายใน [... ] บนกล่อง Linux ที่ฉันใช้อยู่ในตอนนี้ไม่มี/dev/tcpไฟล์พิเศษดังนั้น Bash จะเลียนแบบมัน แต่จริง ๆ แล้วมีระบบเหมือน Unix ที่ให้/dev/tcpไฟล์พิเศษที่มีความหมายเดียวกับที่สนับสนุนโดย Bash หรือไม่

2
ยอมรับ RELATED, ESTABLISHED สำหรับทุกแหล่งใน iptables ที่ถือว่า“ เปิดมากเกินไป” หรือไม่
ฉันมักจะเห็นกฎที่-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTใช้ ในขณะที่ฉันไม่ใช่ผู้เชี่ยวชาญบรรทัดนั้นเกี่ยวข้องกับฉัน เห็นได้ชัดว่ากฎอนุญาตการรับส่งข้อมูลทั้งหมดโดยมีข้อยกเว้นเพียงอย่างเดียวว่าการเชื่อมต่อจะต้องมีการสร้างขึ้นหรือเกี่ยวข้องกับการเชื่อมต่อที่สร้างไว้แล้ว สถานการณ์ ฉันจะอนุญาตให้เชื่อมต่อกับพอร์ต SSH เริ่มต้น22จากเซิร์ฟเวอร์ LAN ในซับเน็ต192.168.0.0/16หรืออะไรก็ตาม SuperInsecureApp®เปิดเผยบางสิ่งบนพอร์ต1337ซึ่งฉันเพิ่มลงในINPUTห่วงโซ่ของฉัน ฉันได้เพิ่มconntrackกฎเพื่อยอมรับESTABLISHEDและRELATEDจากทุกแหล่ง นโยบายลูกโซ่คือ DROP ดังนั้นโดยทั่วไปแล้วการกำหนดค่า shoud อนุญาตให้เชื่อมต่อ SSH จาก LAN เท่านั้นในขณะที่อนุญาตการรับส่งข้อมูลขาเข้าบนพอร์ต 1337 จากโลก นี่คือที่ที่ความสับสนของฉันบาน จะconntrackในทางใดทางหนึ่งเปิดเผยข้อบกพร่องการรักษาความปลอดภัยที่จะช่วยให้หนึ่งที่จะได้รับการเชื่อมต่อที่จัดตั้งขึ้นใน 1337 (ตั้งแต่มันเปิดโลก) แล้วใช้การเชื่อมต่อที่สามารถเข้าถึงพอร์ต SSH (หรือพอร์ตอื่น ๆ สำหรับเรื่องที่)?
9 security  iptables  ip  tcp 

5
ฉันจะรู้ได้อย่างไรว่าพอร์ต TCP เปิดอยู่หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันพยายามใช้การเขียนโปรแกรมซ็อกเก็ตใน C. เมื่อฉันพยายามเชื่อมต่อจากไคลเอนต์กับเซิร์ฟเวอร์ (Ubuntu) มันแสดงข้อผิดพลาดเช่น "การเชื่อมต่อล้มเหลว" ดังนั้นฉันคิดว่าปัญหาอยู่ที่พอร์ต ฉันใช้พอร์ต 5454 / tcp สำหรับการเขียนโปรแกรมซ็อกเก็ต ฉันจะรู้ได้อย่างไรว่าพอร์ต 5454 กำลังฟังหรือไม่? หากไม่เป็นเช่นนั้นพอร์ตใดบ้างที่ฉันสามารถใช้สำหรับการเขียนโปรแกรมซ็อกเก็ต TCP โดยใช้ C ใน Ubuntu นั่นเป็นปัญหากับพอร์ตเท่านั้นหรือมีอะไรผิดปกติในรหัสของฉันหรือการตั้งค่าใด ๆ ที่จำเป็นใน LINUX Ubuntu? แก้ไข: ตัวอย่างโค้ด: int socket_send; struct sockaddr_in address; printf("\n Initialization Socket...."); socket_send = …
9 linux  tcp  socket 

1
/ dev / tcp ไม่มีอยู่ใน Linux
ฉันกำลังย้ายรหัส C / pro * c จาก UNIX ไปยัง Linux รหัสคือ: #define __NFDBIT (8 * sizeof(unsigned long)) #define __FD_SETSIZ 1024 #define __FDSET_LONG (__FD_SETSIZ/__NFDBIT) typedef struct { unsigned long fds_bits [__FDSET_LONG]; } __ernel_fd_set; typedef __ernel_fd_set fd_set_1; int main() { fd_set_1 listen_set; int listen_sd; int socket_id; FD_ZERO(&listen_set); socket_id = t_open("/dev/tcp", O_RDWR|O_NONBLOCK, (struct …
9 linux  c  tcp 

2
TCP MSS ที่น้อยที่สุดใน Linux
TCP MSS ใน Linux ต้องมีอย่างน้อย 88 (รวม / net / tcp.h): /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ #define TCP_MIN_MSS 88U คำถามของฉันคือ: พวกเขามากับ "60 + 60 + 8" แล้วทำไม ฉันได้ 20 + 20 มาจาก IP header + header TCP แก้ไข: หลังจากดูส่วนหัวอย่างละเอียดสูตรจะมองหาฉันเช่นนี้: (MAX_IP_HDR + MAX_TCP_HDR + MIN_IP_FRAG) - …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.