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
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Dạ, cảm ơn bác đã nghe qua và có lời khích lệ cháu ạ.
Thật lòng cháu không dám nhận hai danh hiệu Kỹ sư và Nhạc sĩ đâu ạ, vì phải thật hiểu sâu nắm vững cơ, chứ thực lực cháu đây chỉ là biết chút ít thôi à. Về phần...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 11:58 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietĐơn giản thì có trải nghiệm này
http://www.dientuvietnam.net/forums/...ch%C3%AA%CC%81
Chỉ phần cứng,...-
Channel: Điện tử công suất
27-01-2026, 21:32 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pphức tạp quá, nếu mà có mạch làm sẵn thì ngon, e dùng 2 tấm pv loại 18v 55w thôi bác
-
Channel: Điện tử công suất
26-01-2026, 08:52 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pcảm ơn bác nhiều nha, để e nghiên cứu
-
Channel: Điện tử công suất
26-01-2026, 07:38 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamkỹ sư nhạc sĩ dinhthuong dạo này lên tay nghề khá quá.
-
Channel: Tâm tình dân kỹ thuật
25-01-2026, 21:29 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Hát Mừng Sinh Nhật, sáng tác: HĐT, hòa âm-thể hiện: AI
-
Channel: Tâm tình dân kỹ thuật
24-01-2026, 22:13 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Chào bác, gần Tết công việc bác bận lắm phải không?
Vâng mọi người đều thế cả.
Em mới trả phí cho nó 1 tháng, nhờ nó hát thử ấy ạ. Tiếc vì em đã dốt nhạc lí lại lười học nên sáng tác thì vụng về mà hát demo...-
Channel: Tâm tình dân kỹ thuật
24-01-2026, 21:53 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietCảm thấy cứng tay thì làm theo hướng dẫn khá chi tiết ở trang sau
https://www.instructables.com/DIY-1k...ge-Controller/-
Channel: Điện tử công suất
23-01-2026, 16:50 -
-
bởi Nexus 6PNhư tiêu đề, các bác giới thiệu e mạch sạc nlmt mppt có chức năng chỉnh dòng với, tấm PV của em 18V 55W, dùng để sạc cho khối pin sắt 3.2V 45A (sắp tới sẽ thay bằng ắc quy 12V)
e cảm ơn-
Channel: Điện tử công suất
23-01-2026, 11:23 -
-
bởi mylinhattNếu bạn đang tìm một dòng máy phay đứng CNC vận hành ổn định, gia công tinh chuẩn và tối ưu năng suất, thì Kitamura là lựa chọn rất đáng cân nhắc. Dòng máy này có kết cấu trục chính theo phương thẳng đứng, bàn máy nằm ngang và vận hành tự động thông qua điều khiển bằng máy tính...
-
Channel: Điều khiển - Tự động hóa
23-01-2026, 11:02 -

Leave a comment: