2014-04-18 14 views
32

Tôi hiện đang làm việc trên một dự án mà tôi cần sử dụng Arduino Nano (http://arduino.cc/en/Main/arduinoBoardNano) để gửi dữ liệu từ bộ cảm biến nhiệt độ đến máy chủ web. Lúc đầu, tôi nghĩ rằng nó sẽ được dễ dàng, vì có rất nhiều thư viện tuyệt vời ra khỏi đó để giúp đỡ với POST/GET vv Tuy nhiên, giáo sư của tôi chỉ nói với tôi rằng tôi cần phải gửi dữ liệu đến máy chủ bằng cách sử dụng TCP/IP và như tôi đã hiểu, POST và GET là các phương thức HTTP.HTTP vs TCP/IP, gửi dữ liệu đến máy chủ web

Ai đó có thể giải thích cho tôi sự khác biệt giữa HTTP và TCP/IP? Cụ thể vì nó liên quan đến việc gửi dữ liệu đến máy chủ web. Tôi đang tìm kiếm một câu trả lời mà không phải là quá kỹ thuật (Tôi là khá mới cho tất cả điều này).

Cuối cùng, nếu có ai đó ở đó với kinh nghiệm làm một Arduino làm những gì tôi đã mô tả ở trên, tôi thực sự sẽ đánh giá cao một số gợi ý.

Cảm ơn!

+2

Họ lớp khác nhau trong hệ thống phân cấp giao thức. Hãy xem các trang Wikipedia của họ hoặc truy cập một trang web như tcpipguide.com để tìm hiểu cách thức các giao thức được xếp lớp. – Barmar

+1

@Barmar liên kết rất hữu ích với tcpipguide.com – Adam

Trả lời

46

HTTP là giao thức được sử dụng chủ yếu để duyệt Internet (IE, Firefox, v.v.). Nó cưỡi trên đầu trang của TCP cung cấp một liên kết đáng tin cậy giữa hai máy tính (nếu gói bị mất - nó được truyền lại). TCP chính nó cưỡi trên đầu trang của IP, cung cấp địa chỉ thống nhất để giao tiếp giữa các máy tính. TCP/IP là cơ sở cho internet và 99% các mạng khác.

Về cơ bản nó có nghĩa là nếu bạn đang giao tiếp HTTP, bạn đang làm nó với TCP/IP bên dưới (nhưng tôi chắc chắn đây không phải là những gì giáo sư của bạn có nghĩa).

Arduino Nano không hỗ trợ tất cả những thứ đó, vì vậy bạn cần một cái gì đó ở giữa, điều này sẽ chuyển tín hiệu Nano sang giao tiếp TCP/HTTP.

Một số bạn tùy chọn là:

  1. Giao tiếp với Nano qua nối tiếp và làm cho máy tính dịch giao thức nối tiếp của bạn để HTTP/TCP
  2. Chuyển Nano với một số bảng Arduino khác có hỗ trợ mở rộng Ethernet/Wifi khiên (Uno/Mega), hoặc chọn một bảng tùy chỉnh chứa Ethernet của chính mình
  3. Sử dụng Arduino (Uno/Mega) khác với lá chắn Ethernet làm bảng bổ sung liên lạc với Nano over Serial hoặc với trợ giúp của mô-đun RF (cá nhân tôi đã triển khai tùy chọn này trong quá khứ)
  4. .210
  5. Một tùy chọn khác thường là để đính kèm Nano đến điện thoại thông minh Android của bạn sử dụng cáp Audio và sử dụng thư viện mềm-modem (https://code.google.com/p/arms22/issues/detail?id=2), trong đó có thực hiện dành cho Android và viết một ứng dụng dành cho Android

Web server bạn đề cập đến sự hỗ trợ HTTP chỉ theo định nghĩa, vì vậy nếu bạn muốn giao tiếp qua TCP, bạn sẽ cần phải sử dụng một số máy chủ TCP.

Một trong những dịch vụ web hiện có để cung cấp đồ thị để hiển thị dữ liệu cảm biến là https://xively.com/, API dựa trên REST chạy trên đầu trang của HTTP. Nhưng nó không phải là người duy nhất.

+2

@Miro Làm thế nào để tôi xem xét tùy chọn số 2 của bạn với bảng tùy chỉnh khác nhau có ethernet của chính nó? Bạn có thể đề nghị một số bảng. Làm thế nào tôi nên đi tiếp sau đó? – ddpd

+0

Tôi rất thích nền tảng Spark (có tích hợp wifi) - https://store.spark.io/?product=spark-core – Miro

+0

Nếu bạn cần thứ gì đó mạnh hơn - tôi khuyên bạn nên dùng Udoo - http: // www. udoo.org/. Họ làm bảng chất lượng cao. Hoặc Beaglebone Black (http://beagleboard.org/BLACK) rẻ hơn một chút – Miro

8

@Miro trả lời câu hỏi tốt, trong speak kỹ thuật, nhưng đối với người mới về chủ đề của mạng, tôi muốn đưa ra một lời giải thích trong không-để-kỹ thuật-nói:

Người ta có thể coi TCP hoặc UDP tương đương với Bưu điện Hoa Kỳ, trong khi HTTP tương đương với một mẫu thư kinh doanh.Nếu bạn viết thư cho một người không xác định, vì định dạng thư kinh doanh là cách tốt, chung chung để truyền "WHO, CÁCH, GÌ, KHI NÀO, VÀ ĐÂU" của thư của bạn, nhưng đó KHÔNG phải là định dạng duy nhất được cho phép bởi USPS. Tức là, nếu bạn viết thư cho một doanh nghiệp hay người thân, bạn có thể từ bỏ các thủ tục và thay vào đó với một định dạng hiệu quả hơn, như hóa đơn thanh toán hoặc thư tình hoặc thiệp chúc mừng, nhưng USPS, như TCP hoặc UDP, vẫn ở đó cho bạn, mang theo các chữ cái qua lại.

34

Tóm lại: TCP là giao thức tầng truyền tải và HTTP là giao thức tầng ứng dụng chạy trên TCP.

Chi tiết: Để hiểu sự khác biệt (và rất nhiều chủ đề mạng khác), bạn cần phải hiểu ý tưởng về mô hình mạng lớp. Về cơ bản, có các giao thức khác nhau cho phép một máy tính nói chuyện ở những khoảng cách khác nhau và các lớp trừu tượng khác nhau.

Ở dưới cùng của ngăn xếp mạng là lớp vật lý. Đây là nơi các tín hiệu điện hoặc xung ánh sáng hoặc sóng radio thực sự truyền tải thông tin từ nơi này đến nơi khác. Lớp vật lý không thực sự có các giao thức, nhưng thay vào đó có các tiêu chuẩn cho điện áp, tần số và các đặc tính vật lý khác. Bạn có thể truyền tải thông tin trực tiếp theo cách này, nhưng bạn cần rất nhiều năng lượng hoặc một đường dây chuyên dụng và không có lớp cao hơn, bạn sẽ không thể chia sẻ băng thông.

Lớp tiếp theo là lớp liên kết. Lớp này bao gồm giao tiếp với các thiết bị chia sẻ phương tiện truyền thông vật lý. Ở đây, các giao thức như Ethernet, 802.11a/b/g/n và Token Ring chỉ định cách xử lý nhiều truy cập đồng thời vào phương tiện vật lý và cách hướng lưu lượng truy cập đến một thiết bị thay vì thiết bị khác. Trong một mạng gia đình điển hình, đây là cách máy tính của bạn nói chuyện với nhà "router" của bạn.

Lớp thứ ba là lớp mạng. Trong phần lớn các trường hợp, điều này bị chi phối bởi Giao thức Internet (IP). Đây là nơi mà sự kỳ diệu của Internet xảy ra, và bạn có thể nói chuyện với một máy tính nửa chừng trên toàn thế giới, mà không cần biết nó ở đâu. Các bộ định tuyến xử lý hướng lưu lượng truy cập của bạn từ mạng cục bộ của bạn đến mạng nơi máy tính khác đang sống, trong đó lớp liên kết của nó xử lý việc nhận các gói đến máy tính phù hợp.

Bây giờ chúng ta đang đi đâu đó. Chúng ta có thể nói chuyện với một máy tính ở đâu đó trên thế giới, nhưng máy tính đó đang chạy rất nhiều chương trình khác nhau. Làm thế nào nó nên biết cái nào để gửi tin nhắn của bạn đến? Lớp vận chuyển sẽ xử lý vấn đề này, thường là với số cổng. Hai giao thức tầng giao vận phổ biến nhất là TCP và UDP. TCP thực hiện rất nhiều điều thú vị để làm mịn các điểm thô của giao tiếp chuyển mạch gói mạng như gói sắp xếp lại, truyền lại các gói bị mất, vv UDP không đáng tin cậy hơn, nhưng có ít chi phí hơn.

Vì vậy, chúng tôi đã kết nối trình duyệt của bạn với phần mềm máy chủ web ở đầu bên kia, nhưng máy chủ biết trang nào bạn muốn? Bạn có thể đăng câu hỏi hoặc câu trả lời bằng cách nào? Đây là những thứ mà các giao thức tầng ứng dụng xử lý. Đối với lưu lượng truy cập web, đây là Giao thức truyền siêu văn bản (HTTP). Có hàng ngàn giao thức tầng ứng dụng: SMTP, IMAP và POP3 cho email; XMPP, IRC, ICQ để trò chuyện; Telnet, SSH, RDP cho quản trị từ xa; v.v.

Đây là năm lớp của mô hình mạng TCP/IP, nhưng chúng thực sự chỉ mang tính khái niệm. Mô hình OSI có 7 lớp. Trong thực tế, một số giao thức shim giữa các lớp khác nhau, hoặc có thể làm việc ở nhiều lớp cùng một lúc. Ví dụ, TLS/SSL cung cấp thông tin mã hóa và phiên giữa mạng và các tầng truyền tải. Phía trên lớp ứng dụng, Giao diện lập trình ứng dụng (API) quản lý giao tiếp với các ứng dụng web như Quora, Twitter và Facebook.

+9

Sao chép/dán đẹp từ https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and- Giao thức TCP – Sally

+1

Gosh câu trả lời này thật tuyệt vời. Chỉ có thể kết thúc để tìm ra anh ta vừa mới sao chép từ Quora. Vẫn còn tuyệt vời để có ở đây mặc dù. –

Các vấn đề liên quan