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 lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:49 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnNhớ không nhầm thì lúc còn đi học có gặp chú 1 lần cf bãi xe Nguyễn Kim, giờ quán cf đó nghỉ bán rồi
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:44 -
-
Trả lời cho Thắc mắc pin 21v ?bởi lvhnCon số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 15:32 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnThay mấy con transisto nhỏ đầu vào, thường vi sai lỗi hay bị. Khám tổng quát chân các linh kiện xem có bị rỉ sét nhiều không?
-
Channel: Điện thanh
Hôm qua, 15:24 -
-
bởi dinhthuong92Mạch này hiệu suất ra led đạt khoảng 90.7% tại 12V in, 40W out.
-
Channel: Nguồn!
27-07-2026, 10:15 -
-
bởi dinhthuong92Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
-
Channel: Nguồn!
27-07-2026, 10:09 -
-
Trả lời cho [Chia sẻ] Tổng hợp các công ty AI Việt Nam đang làm gì thật sự — Từ voicebot, computer vision đến AI agentsbởi nguyendinhvanCàng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.-
Channel: Xu hướng, nhu cầu và thị trường
25-07-2026, 14:59 -
-
bởi trung30000Em có con amply 12 sò D 718 và e688 , biến áp 15A, 30v 0 30 v, một kênh thì hoạt động bình thường, kênh còn lại nổ bụp bụp, sột sột, đèn tín hiệu nhảy lên vạch max, khoảng 4 đến 5 giây, sau đó đèn tín hiệu trả về mức không, Em thấy như...
-
Channel: Điện thanh
24-07-2026, 13:50 -
-
Trả lời cho Tìm hiểu máy hàn lăn (Rolling Welding)bởi hoang_3ibác cần thì liên hệ Em: mayhanhaivuong.com (0903238399)...
-
Channel: Điện tử công nghiệp
24-07-2026, 10:58 -
-
Trả lời cho Công thức tính định luật kirchhoffbởi abcnewmemberGiải bằng hệ phương trình bật nhất 3 ẩn.
...
-
Channel: Hỗ trợ học tập
23-07-2026, 14:52 -

Leave a comment: