Chương 1: Tổng quan. Chương này trình bày sơ lược về tình hình nghiên cứu hiện nay, tính cấp thiết cùng lý do chọn đề tài, phương pháp, mục tiêu , đối thượng và phạm vi nghiên cứu. Chương 2: Cơ sở lý thuyết. Nội dung chủ yếu của chương này là trình bày lý thuyết về lập trình mạng, kit Raspberry Pi và ngôn ngữ lập trình liên quan (Python).
Chương 3: Thiết kế và thi công. Trong chương này, người nghiên cứu sẽ trình bày về mô hình của hệ thống; chức năng, sơ đồ khối và các chương trình xử lý trên board trung tâm; nhiệm vụ của phần mềm và lưu giải thuật cùng các phần mềm trên máy tính. Chương 4: Kết quả. Kết quả thực hiện đồ án sẽ được thể hiện trong chương này, bao gồm mô hình và hoạt động của toàn hệ thống.
Chương 5: Kết luận và hướng phát triển. Chương này mang tính tổng kết cho toàn bộ quá trình thực hiện đồ án; nhận xét ưu, nhược điểm của hệ thống và đưa ra định hướng mở cho đề tài thực hiện. 4 do an Chương 2 CƠ SỞ LÝ THUYẾT 2. Lập trình giao tiếp mạng 2.
Giới thiệu về socket Góc độ mạng: Socket là 1 trong 2 điểm cuối của đường kết nối 2 chiều giữa 2 chương trình thực thi trên mạng. 1 Hình minh họa socket Góc độ người lập trình: Socket là một giao diện lập trình ứng dụng (API) mạng. Thông qua giao diện này chúng ta có thể lập trình điều khiển việc truyền thông giữa 2 máy sử dụng các giao thức mức thấp là TCP, UDP,. Socket là sự trừu tượng hóa ở mức cao, có thể tưởng tượng nó như là thiết bị truyền thông hai chiều gửi-nhận dữ liệu giữa hai máy tính với nhau.
Các socket phân biệt với nhau bằng địa chỉ được gọi là địa chỉ cổng (Port Number). Địa chỉ cổng là một con số 16 bit (trong phạm vi 1-65535), trong đó các địa chỉ : Từ 1-1023 là các port đã đăng ký (well-known port). Các địa chỉ còn lại là các port tự do (từ 1024-49151: cổng phải đăng kí (registered port); từ 49152-65535:cổng dùng riêng (private port) ). Một số port đã đăng ký và được liệt kê ở bảng dưới: 5 do an Port Number Protocol 21 FTP 23 Telnet 25 SMTP (email, outgoing) 53 DNS 80 HTTP(Web) 110 POP3(email, incoming) 143 IMAP (email, incoming) Bảng 2.
1 Một số port đã được đăng ký trong giao thức TCP TCP và UDP là hai giao thức hoạt động ở tầng giao vận trong mô hình TCP/IP, có nhiệm vụ truyền nhận dữ liệu đầu cuối cho ứng dụng. 2 Các giao thức TCP/IP phổ biến TCP cung cấp dịch vụ tin cậy và theo hướng kết nối: + Có thiết lập kết nối giữa bên truyền và bên nhận. + Có kiểm soát tắc nghẽn và điều khiển lưu lượng: có bộ đệm truyền/nhận dữ liệu. + Đảm bảo truyền/nhận đúng dữ liệu.
6 do an UDP cung cấp dịch vụ không dây tin cậy và không hướng kết nối: + Không thiết lập kết nối. + Không kiểm soát tắc nghẽn. + Không đảm bảo truyền nhận đúng. Phân loại Socket Socket được phân ra thành các loại như sau: + Socket hướng kết nối (TCP Socket) + Socket không hướng kết nối (UDP Socket) + Raw Socket Hình 2.
3 Phân loại socket Đặc điểm Socket hướng kết nối: + Có một đường kết nối ảo giữa hai tiến trình. + Một trong hai tiến trình phải đợi tiến trình kia yêu cầu kết nối. + Có thể sử dụng để liên lạc theo mô hình Client/server + Trong mô hình Client/Server lắng nghe và chấp nhận một yêu cầu kết nối + Mỗi thông điệp gửi đều có xác nhận trở về. + Các gói tin chuyển đi tuần tự.
7 do an Đặc điểm của Socket không hướng kết nối: + Hai tiến trình liên lạc với nhau không kết nối trực tiếp. + Thông điệp gửi đi phải kèm theo địa chỉ của người nhận. + Thông điệp có thể gửi nhiều lần. + Người gửi không chắc chắn thông điệp tới tay người nhận.
+ Thông điệp gửi sau có thể đến đích trước thông điệp gửi trước đó. Số hiệu của Socket: + Để có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phải công bố số hiệu cổng của socket mà mình sử dụng. + Mỗi cổng giao tiếp thể hiện một địa chỉ xác định trong hệ thống. Khi quá trình được gán một số hiệu cổng, nó có thể nhận dữ liệu gửi đến cổng này từ các quá trình khác.
+ Quá trình còn lại cũng yêu cầu tạo ra một socket. Lập trình TCP Socket dùng lớp Socket Khi hai ứng dụng khởi tạo một phiên làm việc sử dụng dịch vụ TCP, quá trình làm việc bao gồm ba giai đoạn: Giai đoạn 1: bắt tay kết nối. Giai đoạn 2: truyền, nhận dữ liệu. Giai đoạn 3: đóng kết nối.
Mỗi giai đoạn yêu cầu các bit cờ được thiết lập trong một thứ tự nào đó. Quá trình bắt tay kết nối (3 cái bắt tay) yêu cầu 3 bước để thành lập kết nối: Thiết bị gửi gửi cờ SYN cho biết bắt đầu phiên làm việc. Thiết bị nhận gửi cả cờ SYN và ACK trong cùng một gói tin cho biết nó chấp nhận bắt đầu phiên làm việc. Thiết bị gửi gửi cờ ACK cho biết phiên làm việc đã mở và sẵn sàng cho việc gửi và nhận các gói tin.
8 do an Sau khi phiên làm việc được thành lập, cờ ACK sẽ được thiết lập trong các gói tin. Để đóng phiên làm việc, một quá trình bắt tay khác được thực hiện dùng cờ FIN: Thiết bị khởi đầu đóng kết nối gửi cờ FIN. Thiết bị bên kia gửi cờ FIN và ACK trong cùng một gói tin cho biết nó chấp nhận đóng kết nối. Thiết bị khởi đầu đóng kết nối gửi cờ ACK để đóng kết nối.
4 Các bước bắt tay của giao thức TCP Khi lập trình cho các ứng dụng sử dụng TCP socket, phải thực hiện đầy đủ 3 giai đoạn như trên. Thứ tự gọi các phương thức trong lập trình như sau: Hình 2. 5 Gửi, nhận dữ liệu với giao thức TCP + Phía máy server sẽ tiến hành lần lượt các thao tác: 9 do an Tạo một socket mới. Liên kết với một IPEndPoint cục bộ: tác dụng của bind là giúp cho socket của server biết rằng nó sẽ chờ đợi kết nối và nhận dữ liệu trên IP nào và port là bao nhiêu.
Lắng nghe kết nối: kể từ khi gọi hàm listen thì server sẽ bắt đầu lắng nghe kết nối của mình. Chấp nhận kết nối: khi client kết nối tới server, client phải chờ server chấp nhận kết nối bằng hàm accept. Truyền nhận dữ liệu. Đóng kết nối và trở về trạng thái lắng nghe kết nối.
+ Phía máy client sẽ tiến hành lần lượt: Xác định địa chỉ của server. Kết nối đến server: hàm connect được gọi từ client nếu muốn kết nối tới server. Truyền nhận dữ liệu. Đóng kết nối.
Họ giao thức TCP/IP TCP/IP là viết tắt của Transmission Control Protocol / Internet Protocol (Giao thức Điều Khiển Truyền Thông /Giao thức Internet). Các tầng trong mô hình này là: Tầng Ứng Dụng (Application Layer). Tầng Giao Vận (Transport Layer). Tầng Liên Mạng (Internet Layer).
Tầng Giao Tiếp Mạng (Network Interface Layer). 10 do an Hình 2. 6 Cấu trúc họ giao thức TCP/IP 2. Tầng ứng dụng (Application Layer) Tầng ứng dụng gồm nhiều giao thức cung cấp cho các ứng dụng người dùng.
Được sử dụng để định dạng và trao đổi thông tin người dùng và hệ thống. Một số giao thức thông dụng trong tầng này là: HTTP, FTP, SMTP,… TCPServer, mở sẵn port mặc định sẵn sàng đợi yêu cầu kết nối từ các client. Các client sẽ khởi tạo kết nối TCP thông qua port này, sau khi TCPserver chấp nhận kết nối, client sẽ gửi một bản tin tới server trên kết nối TCP vừa thiết lập. Server sẽ trả lời lại bằng một bản tin khác.
Bản tin này sẽ chứa nội dung yêu cầu. Tầng Giao Vận (Transport Layer) Nhiệm vụ của tầng là thiết lập phiên truyền thông giữa các máy tính và quy định cách truyền dữ liệu. Hai giao thức chính trong tầng này gồm UDP (User Datagram Protocol) và TCP (Transmission Control Protocol). Do UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu một cách tin cậy.
Vì vậy trong phạm vi đồ án, người nghiên cứu sử dụng thức TCP. 11 do an Ngược lại với UDP, TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu một cách tin cậy. TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã nhận. Cấu trúc gói TCP: Hình 2.
7 Cấu trúc gói TCP Số port đích và số port nguồn: để phân biệt các tiến trình ứng dụng đang xảy ra trong máy tính. Các số sequence và Acknowledgement: số sequence để phân biệt các segment khác nhau trong một dòng dữ liệu, các số Acknowledgement dùng trong cơ chế xác nhận. Vùng Data offset: chiều dài của Header tính theo đơn vị 32 bit. Một số cờ (flags): + .URG (Urgent): thiết lập 1 khi có dữ liệu quan trọng cần truyền ngay.ACK: cho biết có số xác nhận nằm trong vùng Acknowledgement.
PSH (Push): được thiết lập trong trường hợp dữ liệu nên được giao tức thời + .RST (Reset): chỉ thị một lỗi sai và hủy bỏ phiên làm việc +. SYN (Synchronize): trong các bản tin khởi tạo khi thiết lập một kết nối truyền dữ liệu 12 do an +. FIN (Finish): dùng đóng 1 phiên làm việc Vùng Window: chỉ ra số lượng không gian bộ đệm khả dụng để nhận dữ liệu. Vùng Checksum: vùng kiểm tra sai cho cả segment.
Vùng Urgent Pointer: chỉ ra chiều dài của dữ liệu urgent. Vùng Options: xác định kích thước cực đại của 1 segment. Cụ thể hơn, vai trò của TCP trong chồng giao thức TCP gồm 3 chức năng chính: điều khiển luồng, kiểm soát lỗi và báo nhận. Điều khiển luồng: điều phối tốc độ và kích thước luồng dữ liệu để đảm bảo phía nhận đủ khả năng nhận và xử lý luồng dữ liệu.
Kiểm soát lỗi: đảm bảo các gói tin đến đúng và đủ. Báo nhận: khi nhận được dữ liệu và không có lỗi, phía nhận phải báo lại với phía gửi biết. Để thực hiện được các chức năng trên, một quá trình truyền dữ liệu qua giao thức TCP (mà ta gọi là phiên truyền thông – session) gồm có 3 giai đoạn: Thiết lập kết nối, truyền dữ liệu và giải phóng kết nối.