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 Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
hôm nay, 12:42 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
06-12-2025, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi afrendlyCó vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
-
Channel: Thiết bị điện tử cá nhân
04-12-2025, 01:27 -

Leave a comment: