Nguyên văn bởi joystick
Xem bài viết
Thông báo
Collapse
No announcement yet.
Giao thức TCP/IP và Web server với AVR
Collapse
This is a sticky topic.
X
X
-
Khả năng là em chưa set địa chỉ MAC cho mạch hoặc set 1 địa chỉ MAC không hợp lệ. Việc PC nhận được có nghĩa là em truyền đúng địa chỉ IP và MAC của PC (destination address) thôi, chưa chắc là trong Ethernet frame em đã set đúng địa chỉ MAC cho mạch (source MAC address).
-
Anh Tâm cho em hỏi, tại sao Khi em truyền dữ liệu từ mạch của em lên máy tính(Giao thức UDP), ứng dụng trên máy tính đã nhận (Điều đó chứng tỏ em đã truyền đúng MAC và IP) nhưng tại sao bảng ARP Cache của PC lại không thấy MAC của mạch, mà chỉ có địa chỉ IP, MAC là 00:00:00:00:00:00 và Type là Invalid??
Anh cho em hỏi thêm là,hiện em đang truyền dữ liệu lớp UDP mà Lớp IP không phân đoạn nên cứ 1 frame ethernet nó lại ngắt 1 lần (event) trong lớp UDP. Vậy nếu như e truyền theo giao thức UDP mà segment của nó lớn hơn nhiều kích thứoc 1 frame bằng cách chia nó thành nhiều gói IP để gửi thì lúc nào lớp UDP sẽ thông báo(event) là nhận được dữ liệu lớp UDP??
Nhân tiện a có thể giới thiệu thêm cho em phần chia gói tin này được ko? hoặc a có tài liệu nào về phần này thì giới thiệu em với! Thanks!
Leave a comment:
-
Cám ơn anh Tâm. Em đã truyền được rồi, mặc dù cách tính crc32 hơi "lại" 1 chút (vì e cũng chưa hiểu là nó tính như nào, e chỉ dựa vào cái crc_table rồi tính ra thôi). Em có câu hỏi là: Khi ta truyền lên PC thì hệ điều hành sẽ quản lý việc nhận các gói tin chứ không phải là do card mạng tự động làm, đúng không anh, vì em thấy khi dùng một số phần mềm đổi MAC thì chương trình ko chạy được, vậy có nghĩa là MAC vật lý của card mạng đã được thay dổi phải ko a?Nguyên văn bởi nttam79 Xem bài viếtĐa thức của CRC-32 Ethernet: 0x04C11DB7.
Cẩn thận với thứ tự bit, byte.
Tham khảo thêm ở đây cho FPGA nè: CRC32 implementation in ETHERNET : exact way
Leave a comment:
-
chào các bác.em mới tìm hiểu về đề tài này.
em có 1 thắc mắc là.Từ trước tới giờ thì em tạo 1 project thì chỉ có 1 file .c là của project và các file .h
nhưng trong project này thì lại có nhiều file .c nữa,nên em thắc mắc là file .c không được #include vào thế thì khi dịch thì code trong file .c sẽ được dịch như thế nào.
và em muốn dồn mỗi công đoạn vào 1 file.h thôi có được không?
Leave a comment:
-
Đa thức của CRC-32 Ethernet: 0x04C11DB7.Nguyên văn bởi joystick Xem bài viếtCám ơn anh Tâm. Em đã tìm rất nhiều cách tính check sum cho phần ethernet nhưng cuối cùng vẫn không thể bắt tay được với PC.
Em có đoạn dữ liệu này cần truyền qua PC với giao thức Ethernet->IP->UDP (cả phần header và phần data 18 byte ko tính phần Preamble va SOF) sau:
Khi em dùng các phần tính CRC32 theo cách tính đa thức x32+x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + x0Code:Ethernet header 1-->14 : Host PC MAC Address : x"00", x"1d", x"72", x"09", x"f9", x"21" Source MAC Address : x"00", x"12", x"34", x"56", x"78", x"90" Type : x"08", x"00" IPv4 Header 1-->20: VerLen+DSF : x"45",x"00" Total Length : x"00", x"2e" (18+28 bytes (for UDP)) Identification : x"b3", x"fe" Flags + Frag offset :x"00", x"00" Time to live : x"80" Protocol : x"11" -- UDP (17) checksum : x"05", x"40" IP Source : x"c0", x"a8", x"00", x"2c" -- 192.168.0.44 IP Destination : x"c0", x"a8", x"00", x"04" -- 192.168.0.4 UDP Header 1-->8: Source port : x"04", x"00", --1024 Destination port : x"04", x"00", --1024 Length : x"00", x"1a", --26 bytes (data_packet + udp_header_len) Checksum : x"2d", x"e8" Data 1->18 : x"00",x"01",x"02",x"03",x"04",x"05", x"06",x"07",x"08",x"09",x"0a",x"0b", x"0c",x"0d",x"0e",x"0f",x"10",x"11" Checksum: 1->4 ???
(cách này được các trang web dùng để tạo CRC32) thì đều tạo ra đúng 1 kết quả như nhau (E75C21A6). Tuy nhiên khi dùng đúng CRC này để truyền thì PC không nhận được mà e dùng một phần mềm khác tạo CRC32(data đã được fix như trên) thì kết quả là 704de32a. Và dùng CRC này truyền sang thì PC nhận được frame đúng như ban đầu.
Em không hiểu cách tính CRC32 như thế nào???
Cẩn thận với thứ tự bit, byte.
Tham khảo thêm ở đây cho FPGA nè: CRC32 implementation in ETHERNET : exact way
Leave a comment:
-
Cám ơn anh Tâm. Em đã tìm rất nhiều cách tính check sum cho phần ethernet nhưng cuối cùng vẫn không thể bắt tay được với PC.
Em có đoạn dữ liệu này cần truyền qua PC với giao thức Ethernet->IP->UDP (cả phần header và phần data 18 byte ko tính phần Preamble va SOF) sau:
Khi em dùng các phần tính CRC32 theo cách tính đa thức x32+x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + x0Code:Ethernet header 1-->14 : Host PC MAC Address : x"00", x"1d", x"72", x"09", x"f9", x"21" Source MAC Address : x"00", x"12", x"34", x"56", x"78", x"90" Type : x"08", x"00" IPv4 Header 1-->20: VerLen+DSF : x"45",x"00" Total Length : x"00", x"2e" (18+28 bytes (for UDP)) Identification : x"b3", x"fe" Flags + Frag offset :x"00", x"00" Time to live : x"80" Protocol : x"11" -- UDP (17) checksum : x"05", x"40" IP Source : x"c0", x"a8", x"00", x"2c" -- 192.168.0.44 IP Destination : x"c0", x"a8", x"00", x"04" -- 192.168.0.4 UDP Header 1-->8: Source port : x"04", x"00", --1024 Destination port : x"04", x"00", --1024 Length : x"00", x"1a", --26 bytes (data_packet + udp_header_len) Checksum : x"2d", x"e8" Data 1->18 : x"00",x"01",x"02",x"03",x"04",x"05", x"06",x"07",x"08",x"09",x"0a",x"0b", x"0c",x"0d",x"0e",x"0f",x"10",x"11" Checksum: 1->4 ???
(cách này được các trang web dùng để tạo CRC32) thì đều tạo ra đúng 1 kết quả như nhau (E75C21A6). Tuy nhiên khi dùng đúng CRC này để truyền thì PC không nhận được mà e dùng một phần mềm khác tạo CRC32(data đã được fix như trên) thì kết quả là 704de32a. Và dùng CRC này truyền sang thì PC nhận được frame đúng như ban đầu.
Em không hiểu cách tính CRC32 như thế nào???
Leave a comment:
-
Sai checksum frame ethernet thì Network Access layer sẽ loại gói tin, nên khả năng là PC và wireshare không nhận. Checksum ethernet là mã CRCNguyên văn bởi joystick Xem bài viếtAnh cho e hỏi thêm là cách tính checksum cho lớp ethernet ntn? ở trên là chip enc28j60 thực hiện rồi!
Leave a comment:
-
Anh cho e hỏi thêm là cách tính checksum cho lớp ethernet ntn? ở trên là chip enc28j60 thực hiện rồi!
Leave a comment:
-
Cám ơn anh! e đọc các bài viết của anh và đang làm trên vhdl( e mới chỉ làm trên udp). còn 1 câu hỏi nữa ở trên là nếu e gửi lên PC mà phần checksum của lớp ethernet sai thì wireshark và PC có nhận được ko a?
Leave a comment:
-
1-Được với điều kiện gửi đúng địa chỉ MAC. Nếu nối trực tiếp board với PC thì cần config IP tĩnh cho PC, PC nhận được nhưng không xử lý tiếp nếu ko được chỉ định giao thức lớp trên, wireshark bắt được.Nguyên văn bởi joystick Xem bài viếtChào anh Tâm và các bạn. Mình đang làm 1 project nhỏ về truyền dữ liệu từ fpga( mình đang dùng spartan 3e) sang PC dùng code VHDL tuy nhiên mình sẽ không bàn luận ở đây (vì sai thread). Tuy nhiên mình muốn hỏi rằng. Mình đã truyền sang PC nhưng PC không thấy nhận được mà biểu tượng mạng trên PC cứ connect rồi lại unplug liên tục, dùng wireshark cũng không thấy phát hiện được gói tin nào. Mình có các câu hỏi sau mong mọi người giải đáp giúp:
1. Nếu mình chỉ truyền dữ liệu lớp MAC (ethernet) thì máy tính và wireshark có phát hiện được ko? Và nếu checksum của lớp này sai thì có nhận được không?
2. Mình chỉ làm 2 giao thức lớp trên là IP và UDP (hoặc TCP) mà mạch chỉ thực hiện truyền dữ liệu sang PC (ko làm phần nhận dữ liệu) trong những khoảng thời gian nhất định thì có được không? Có nghĩa là mạch của mình chỉ cần truyền chứ không cần biết bên kia nhận được hay không (Cái này mình nghĩ là dùng UDP thì có thể giải quyết được bài toán này?)
2-Được, dùng UDP (TCP không được vì cần bắt tay). Các thông số IP cho board cần cấu hình tĩnh.
Leave a comment:
-
Chào anh Tâm và các bạn. Mình đang làm 1 project nhỏ về truyền dữ liệu từ fpga( mình đang dùng spartan 3e) sang PC dùng code VHDL tuy nhiên mình sẽ không bàn luận ở đây (vì sai thread). Tuy nhiên mình muốn hỏi rằng. Mình đã truyền sang PC nhưng PC không thấy nhận được mà biểu tượng mạng trên PC cứ connect rồi lại unplug liên tục, dùng wireshark cũng không thấy phát hiện được gói tin nào. Mình có các câu hỏi sau mong mọi người giải đáp giúp:
1. Nếu mình chỉ truyền dữ liệu lớp MAC (ethernet) thì máy tính và wireshark có phát hiện được ko? Và nếu checksum của lớp này sai thì có nhận được không?
2. Mình chỉ làm 2 giao thức lớp trên là IP và UDP (hoặc TCP) mà mạch chỉ thực hiện truyền dữ liệu sang PC (ko làm phần nhận dữ liệu) trong những khoảng thời gian nhất định thì có được không? Có nghĩa là mạch của mình chỉ cần truyền chứ không cần biết bên kia nhận được hay không (Cái này mình nghĩ là dùng UDP thì có thể giải quyết được bài toán này?)
Leave a comment:
-
Em cũng bị lỗi TCP không bắt tay được. Em dùng wireshark bắt gói thì thấy mạch nhận được bản tin nhưng không đáp lại.
Em vẫn dùng file code thầy post rồi viết thêm giao thức tầng ứng dụng. Vấn đề là, từ trước em vẫn dùng file đó test vào web bình thường, nhưng hiện giờ lại bị như vậy mặc dù mô phỏng Proteus vẫn vào tốt (em nghĩ code rất ổn).
Vậy bản chất lỗi này là gì ạ?
Xin các thầy, các anh giúp đỡ chỉ bảo cho em. Chỉ cần có giả thiết nào đó, em sẽ tự nghiên cứu.
Em cảm ơn các thầy, các anh ạ.
PS: Huhu, em bí lắm rồi ...
Leave a comment:
-
mới tìm dc modem hỗ trợ no-ip rồi các bác thích thì mua về làm điều khiển qua internet nha, loại này của TP-link cũng ko max đâu có 120k ah hehe
Làm sao để thiết lập DDNS (No-IP) trên Wireless Router của TP-LINK - Chào mừng đến với TP-LINK
Leave a comment:
-
mới tìm dc modem hỗ trợ no-ip rồi các bác thích thì mua về làm điều khiển qua internet nha,
Làm sao để thiết lập DDNS (No-IP) trên Wireless Router của TP-LINK - Chào mừng đến với TP-LINK
Leave a comment:
-
em tìm ra lỗi rồi, do tcp checksum sai.
quần hơn 1 ngày mới ra được.
Leave a comment:
Bài viết mới nhất
Collapse
-
bởi chinhnguyen9So sánh sóng 2 mạch nguồn Push-pull
· Sóng vuông giửa 2 cực D của mạch Pushpull trong module inverter 24-220V sine giả của TQ. Mạh điện này khá đặc biêt ở chổ, không thấy mạch snubber mà hiêu quả triêt sóng hài quá tốt dù hoạt...-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 14:27 -
-
bởi chinhnguyen9Mạch điên bếp tù gộm 2 khối:
Khối điêu khiển:
-Thiết lập công suất nấu
-Thiết lập thời gian nấu
-Kiểm tra có đặt nồi hay không, đúng loại hay không?
-Có quá nhiệt không?
Khối công suất:
- Nắn+ lọc điên AC ra 310VDC +loọc nhiểu...-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 14:05 -
-
bởi ittcHi các bác, sau khi được vài lời khuyên thì em có vào lướt web để xem vài mẫu máy, thì ở phần thông số kỹ thuật của máy, thấy họ để vài thông số sau thì em không rành lắm, nhờ các bác giải thích hộ em được không, cụ thể như hình...
-
Channel: Điện tử gia dụng
Hôm qua, 18:34 -
-
bởi Nexus 6PCác bác cho e xin mạch chớp xinhan 4 bóng hazard kiểu luân phiên với
giống clip này mà kiểu nháy ở giây thứ 2, e cảm ơn ạCode:https://www.tiktok.com/@caitiemdocar/video/7586617548284628242
-
Channel: Điện tử công suất
14-03-2026, 17:26 -
-
bởi ittcNhờ các bác chỉ bảo, tư vấn giúp em nên mua loại máy khoan cầm tay nào dùng trong nhu cầu gia đình với ạ, em vào website của 1 số nới bán uy tín thì mục Máy khoan họ để nhiều loại quá, em chả biết là nên mua loại nào cho đúng, hoa cả mắt...
-
Channel: Điện tử gia dụng
13-03-2026, 17:59 -
-
bởi chinhnguyen9Sóng vuông trên cực D của 1 nhánh mạch Push pull (board mạch UPS Santak 1000)
Kết quả khi chạy không có hồi tiếp âm ghim điện áp ra thì khi không tải điện áp có thể >400VDC do sóng hài tạo ra.
Sóng vuông giữa 2 cực D của mạch Push pull trong module...-
Channel: Hướng dẫn sử dụng diễn đàn
10-03-2026, 02:54 -
-
bởi ittcDo đang vội nên tính làm dần, nhờ các bác tư vấn giúp em về việc lắp camera quan sát ở nhà với, nhà em thì cũng kiểu nhà phố, nhà mặt tiền đường ngõ hẻm thôi.
- Thứ nhất là em tính sẽ lắp đặt loại camera đi dây và có đầu...-
Channel: Tâm tình dân kỹ thuật
09-03-2026, 06:18 -
-
bởi s2pk98Ai có sơ đồ nguồn tcl l49p3- cf cho em với ,cháy mấy con r mà không biết là mấy...
-
Channel: Điện tử gia dụng
08-03-2026, 21:38 -

Leave a comment: