CHƯƠng 1: DẪn nhậP 4



tải về 1.48 Mb.
trang4/11
Chuyển đổi dữ liệu04.01.2018
Kích1.48 Mb.
#35358
1   2   3   4   5   6   7   8   9   10   11

2.2 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).



Hình 2.2: Cấu trúc họ giao thức TCP/IP

2.2.1 Tầng Ứng Dụng (Application Layer)


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,…Trong phạm vi đồ án, chúng ta sử dụng giao thức HTTP mà cụ thể là xây dựng một Webserver nhúng vào hệ thống.

HTTP là giao thức truyền tải siêu văn bản (HyperText Transfer Protocol). HTTP xác định cách các thông điệp được định dạng và truyền tải ra sao và hoạt động của Webserver và các trình duyệt Web.Trong mô hình của HTTP, Webserver đồng thời cũng là TCPServer, mở sẵn port mặc định dành cho dịch vụ HTTP là TCP80 (ở chế độ listen), 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 Webserver chấp nhận kết nối, client sẽ gửi một bản tin HTTP (HTTP message) gọi là HTTP request 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 HTTP khác là HTTP response. Bản tin này sẽ chứa nội dung trang Web yêu cầu (được viết bằng ngôn ngữ HTML). Như vậy giao thức HTTP sẽ dựa cơ bản trên các bản tin HTTP, gồm 2 loại là HTTP request và HTTP response.

Giả sử ta truy nhập vào địa chỉ IP của webserver là 192.168.1.10 qua trình duyệt:


  • Lúc đó, máy tính của chúng ta sẽ gửi đi một bản tin request của giao thức HTTP là HTTP Get thông qua giao thức TCP (với cổng TCP được qui định cho giao thức HTTP là 80) đến địa chỉ webserver trên.

  • Webserver, ở đây chính là vi điều khiển của chúng ta nhận được bản tin này (khi đã đi qua hết các lớp giao thức ethernet, IP, TCP rồi mới đến HTTP). Tại đây vi điều khiển sẽ đọc và phân tích bản tin HTTP request này để biết máy tính đang yêu cầu tải nội dung trang web nào.

  • Sau đó vi điều khiển sẽ lấy nội dung trang web này (được soạn thảo theo ngôn ngữ HTML) chứa trên trên ROM, nó cũng có thể thêm vào trang web đó một số thông tin (ví dụ đọc giá trị từ các sensor cảm biến nhiệt độ và đưa vào trong trang web), và gửi toàn bộ nội dung trang web thông qua giao thức TCP trở lại cho máy tính. Nếu nội dung trang web lớn nó có thể được gửi đi trên rất nhiều gói tin, vì mỗi gói tin chỉ chứa tối đa 1460 byte dữ liệu.

  • Máy tính nhận nội dung trang web và trình duyệt sẽ hiển thị lên cho chúng ta thấy. Để điều khiển thiết bị kết tới hệ thống từ xa qua web, trên trang web ta có thể thiết kế một nút nhấn chẳng hạn. Khi ta nhấn nút này trên trình duyệt, máy tính sẽ gửi đi một bản tin HTTP nữa là HTTP Get. Vi điều khiển sẽ nhận bản tin HTTP post này, phân tích dữ liệu chứa trong đó để có đáp ứng tương ứng (bật tắt bóng đèn) sau đó nó sẽ gửi trả lại lần nữa nội dung trang web đã cập nhật những thay đổi vừa rồi.Trình duyệt sẽ cập nhật nội dung này lên và ta sẽ thấy được tác động của thao tác điều khiển.

2.2.2 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 nên trong phạm vi đồ án chúng ta sử dụng thức TCP.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 1 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.3: Cấu trúc gói TCP

Chú thích:



  • 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

. 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 đó, 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.

Để có thể giám sát chặt chẽ trạng thái và mọi sự kiện xảy ra trong một kết nối TCP, trạng thái của một kết nối TCP được chuyển đổi tuân theo một lưu đồ trạng thái như sau:



Hình 2.4: Lưu đồ trạng thái kết nối TCP

Giải thích:

- TCP là giao thức hướng kết nối, dạng client – server. Tức là trong một phiên truyền thông thì sẽ có một phía đóng vai trò client, phía còn lại, lúc nào cũng ở trạng thái chờ đợi các client thiết lập kết nối tới chính là server.
- Ví dụ khi ta truy cập web, thì máy tính của ta là client, máy chủ chứa trang web chính là server – vi điều khiển, lúc nào cũng ở trạng thái đợi các máy tính client kết nối đến (và phải có khả năng thiết lập đồng thời nhiều kết nối, vì có thể có nhiều client kết nối tới cùng lúc).

- Trong lưu đồ trên, áp dụng cho cả client và server. Cả client và server đều bắt đầu bằng trạng thái “Close”. Client sẽ thiết lập kết nối theo con đường Active Open (nó chủ động thiết lập kết nối). Server sẽ thiết lập kết nối theo con đường Passive Open (thụ động, vì nó đợi client bắt đầu mà)

Quá trình chuyển trạng thái:

- Cả hai bắt đầu bằng trạng thái close, không có kết nối nào tồn tại.


- Khi Server mở một port TCP để đợi client thiết lập kết nối, nó chuyển sang trạng thái “Listen”.

- Khi client gửi đi bản tin SYN, nó chuyển sang trạng thái “SYN sent”.


- Lúc này khi server nhận được bản tin SYN từ client và gửi đáp lại 1 bản tin SYN, nó chuyển sang trạng thái “SYN Received”.

- Lúc này client gửi lại bản tin xác nhận ACK (bước 3 trong ví dụ), nó chuyển sang trạng thái thiết lập kết nối “Established”.

- Server nhận được bản tin ACK trên của client, nó cũng chuyển sang trạng thái “Established”.
- Sau đó hai bên tiến hành truyền dữ liệu, trạng thái cả hai đều là “Established”.
- Một trong hai phía truyền xong dữ liệu, đến đây thì vai trò hai bên là như nhau, ta giả sử client truyền xong dữ liệu trước, nó sẽ gửi bản tin FIN, và chuyển sang trạng thái “FIN wait 1”.

- Phía server nhận được bản tin này, gửi xác nhận ACK, và chuyển sang trạng thái “Close wait”.

- Khi client nhận được xác nhận từ server (nhận được bản tin ACK trên) thì nó chuyển sang trạng thái “FIN wait 2”.

- Đến lúc này server vẫn có thể tiếp tục gửi dữ liệu và client vẫn tiếp tục nhận (vì chỉ có client báo là gửi xong dữ liệu).

- Đến khi nào server cũng gửi hết dữ liệu, nó sẽ gửi đi bản tin FIN, cho biết nó cũng đã gửi xong dữ liệu và chuyển sang trạng thái “LAST ACK”.
- Khi client nhận được bản tin FIN trên từ server, nó gửi xác nhận (ACK) và chuyển sang trạng thái “Time wait”, sau đó chờ 1 khoảng thời gian Timeout và đóng kết nối, quay lại trạng thái “Close”.

- Khi server nhận được nó cũng chuyển từ “Last ACK” sang “Close” (không cần đợi Timeout)


2.2.3 Tầng Internet (Internet Layer)


Nằm bên trên tầng truy nhập mạng. Tầng này có chức năng gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu. 4 giao thức quan trọng nhất trong tầng này gồm:

  • IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích.

  • ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC.

  • ICMP (Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng.

  • IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng (Multicast) .

  • Cấu trúc của gói IP:



Hình 2.5: Cấu trúc gói tin IP

Ý nghĩa:


  • Version (có chiều dài 4 bit): cho biết phiên bản của giao thức, đối với trường hợp của chúng ta, giao thức là IP version 4, trường này sẽ luôn có giá trị là 4 (0100).

  • Header Length (4 bit): cho biết chiều dài của header IP, tính theo đơn vị 4 byte (32 bit).

  • TOS (8 bit): Type of Service.

  • Total Length (16 bit): 16 bit tổng chiều dài của gói IP gồm cả phần header.

  • Identification (16 bit): dùng nhận diện các phân đoạn của gói IP.

  • Flags:
    . Bit đầu tiênkhông sử dụng.

. Bit 2: DF (Don’t Fragment) = 1 có nghĩa là không phân đoạn gói này.
. Bit 3: MF (More Fragment) = 0 => đây là phân đoạn cuối cùng.

  • Fragmented offset (13 bit): độ dời (đơn vị 8 byte) tính từ điểm bắt đầu của Header tới điểm bắt đầu của phân đoạn

  • TTL (Time to Live) (8 bit): thời gian tồn tại trên mạng hoặc số chặng trên mạng mà gói đi qua trước khi bị hủy bỏ.

  • Protocol (8 bit): nhận diện Protocol trên lớp IP.

  • Header checksum (16 bit): sửa sai cho phần Header.

  • Các vùng địa chỉ nguồn, địa chỉ đích: địa chỉ IP 32 bit.

  • Option: các tùy chọn dùng cho việc kiểm tra: Loose source routing, Strict source routing, Record route và Timestamp.

  • Padding: Gồm các số zero được thêm vào sao cho chiều dài của vùng Header là bội số của 32 bit.

Cách thức mà dữ liệu được gửi qua giao thức IP được tiến hành như sau:

  • Khi nhận được một segment dữ liệu (từ giao thức lớp trên là TCP) cần gửi đến đích nào đó, địa chỉ đích này phải được xác định bằng địa chỉ IP (tức là địa chỉ mạng hay địa chỉ luận lý). Lớp giao thức IP sẽ gắn thêm vào đầu segment dữ liệu một header IP để tạo thành gói IP hoàn chỉnh. Trong header IP này có chứa 2 thông tin quan trọng, đó là địa chỉ host gửi (source IP address) và địa chỉ host nhận (destination IP address). Địa chỉ source đương nhiên là địa chỉ của bản thân nó, còn địa chỉ đích phải được cung cấp cho lớp IP khi muốn gửi dữ liệu qua giao thức này.

  • Gói tin IP này sau đó được chuyển đến lớp giao thức ethernet để thêm phần header ethernet vào và gửi đi.

Nhưng giao thức ethernet lại gửi các khung dữ liệu đi dựa vào một loại địa chỉ khác là địa chỉ MAC (hay còn gọi là địa chỉ vật lý). Tại sao lại cần đến 2 địa chỉ như vậy? Lý do là địa chỉ vật lý chỉ có giá trị trong phạm vi mạng LAN, nó sẽ không thể giúp xác định vị trí host ở bên ngoài phạm vi mạng LAN. Khi gửi dữ liệu ra ngoài mạng LAN, các router sẽ chuyển dữ liệu đi dựa và địa chỉ IP.
Như vậy trong phần địa chỉ MAC nguồn và địa chỉ MAC đích trong header của khung ethernet, ta sẽ điền các địa chỉ nào? Đối với địa chỉ MAC nguồn, đương nhiên ta sẽ điền địa chỉ MAC của chính ENC28J60 đã được xác lập. Nhưng còn địa chỉ MAC đích, sẽ có 2 trường hợp xảy ra:

  • Nếu host đích nằm trong cùng 1 mạng LAN với chúng ta, ta sẽ điền địa chỉ MAC đích là địa chỉ tương ứng của host đích. Frame dữ liệu sẽ được gửi thẳng đến đích.

  • Nếu host đích nằm bên ngoài mạng LAN, rõ ràng ta không thể gửi dữ liệu trực tiếp đến host đích mà phải thông qua gateway, khi đó địa chỉ MAC đích phải là địa chỉ gateway.

Vẫn còn một vấn đề nữa mà ta phải giải quyết. Đó là trong cả hai trường hợp trên, dù là cần gửi cho gateway hay thẳng đến host đích, thì đến đây, ta mới chỉ biết địa chỉ IP của host đích (hay của gateway) mà không biết địa chỉ MAC tương ứng. Vậy nảy sinh một vấn đề là làm sao biết được địa chỉ MAC của một host khi biết địa chỉ IP?

Đến đây, chính là phát sinh vai trò của giao thức phân giải địa chỉ (APR – Address Resolution Protocol). Vai trò của giao thức này là tìm ra địa chỉ MAC khi biết địa chỉ IP của 1 host.



Cấu trúc gói ARP:



Hình 2.6: Cấu trúc gói tin ARP

Ý nghĩa:


  • Hardware type (2 bytes): cho biết loại địa chỉ phần cứng, đối với địa chỉ MAC của giao thức ethernet thì giá trị này được qui định là "0x0001".

  • Protocol type (2 bytes): cho biết loại địa chỉ giao thức lớp trên, đối với địa chỉ IP, giá trị này được qui định là “0x0800”.

  • HLEN (1 byte): cho biết chiều dài của địa chỉ vật lý (địa chỉ MAC).

  • PLEN (1 byte): cho biết chiều dài của địa chỉ giao thức (địa chỉ IP).

  • Operation (2 bytes): cho biết hoạt động đang thực hiện trong gói tin này (request hay reply).

  • Sender H/W (hardware address, 6 bytes): địa chỉ vật lý của phía gửi.

  • Sender IP (4 bytes): địa chỉ IP của phía gửi.

  • Target H/W (6 bytes): địa chỉ vật lý của phía nhận, nếu chưa biết thì sẽ là chứa toàn 0.

  • Target IP (4 bytes): địa chỉ IP của phía nhận.

Cách thức mà dữ liệu được gửi qua giao thức ARP được tiến hành như sau:

  • Khi giao thức IP đưa xuống yêu cầu tìm chỉ MAC của host có IP là a.b.c.d thì nó phải trả lời ngay địa chỉ MAC của địa chỉ trên dạng XX:XX:XX:XX:XX:XX.

  • Cách thức ARP lấy thông tin giải quyết vấn đề trên là: giao thức ARP duy trì một bảng gọi là ARP cache gồm hai cột, một cột ghi địa chỉ IP, một cột ghi địa chỉ MAC tương ứng với địa chỉ IP đó. Mỗi khi được hỏi bởi giao thức IP, nó sẽ tra bảng này để tìm câu trả lời. Khi được hỏi về một địa chỉ IP a.b.c.d nào đó mà không có sẵn trong bảng ARP cache, nó sẽ lập tức tìm trong mạng LAN phần tử có địa chỉ IP là a.b.c.d bằng cách gửi yêu cầu tới các phần tử trong mạng LAN. Các phần tử này đều nhận được yêu cầu và phần tử nào có IP a.b.c.d sẽ trả lời lại địa chỉ MAC của nó là XX:XX:XX:XX:XX:XX. Vậy giao thức ARP sẽ lập tức thêm cặp địa chỉ IP a.b.c.d và địa chỉ MAC XX:XX:XX:XX:XX:XX vào trong bảng ARP cache và trả lời lại cho giao thức IP.

2.2.4 Lớp giao tiếp mạng


Tầng giao tiếp mạng liên quan tới việc trao đổi dữ liệu giữa hai trạm thiết bị trong cùng một mạng. Giao thức được sử dụng trong phạm vi đồ án là giao thức Ethernet. Phần cứng được sử dụng chip giao tiếp Ethernet ENC28J60 giao tiếp qua chuẩn SPI ( Serial Pheripheral Interface ).

Trong chồng giao thức TCP/IP, giao thức Ethernet đóng vai trò lớp truy nhập và truyền dẫn. Việc gửi và nhận dữ liệu ở lớp Ethernet được thực hiện dựa vào địa chỉ vật lý hay còn gọi là địa chỉ MAC. Trong mỗi khung Ethernet đều chứa 2 địa chỉ MAC: một địa chỉ của host gửi và một địa chỉ của host nhận. Khi lớp Ethernet nhận được một khung dữ liệu, trước hết nó sẽ kiểm tra địa chỉ host nhận xem có phải là địa chỉ của nó không (tức là gửi cho nó), nếu đúng nó sẽ nhận khung này và chuyển đến lớp IP. Ngoài ra còn có 1 trường hợp nữa lớp Ethernet sẽ nhận khung là nếu địa chỉ host nhận là địa chỉ broadcast (tức là gửi cho tất cả mọi máy trong mạng LAN), trong trường hợp này frame sẽ được nhận và xử lý.Ngoài việc kiểm tra địa chỉ, trong khng Ethernet còn có 1 trường chứa mã kiểm tra lỗi giúp phát hiện những lỗi xảy ra trong quá trình truyền, các khung bị xác định là có lỗi sẽ bị bỏ qua.

Trong mạch của chúng ta, việc kiểm tra lỗi và kiểm tra địa được thực hiện tự động bởi IC ENC28J60, do đó ta không cần lập trình cho các chức năng này. Mỗi khi nhận được một khung trên đường truyền, ENC28J60 sẽ kiểm tra lỗi xem có sai sót không, tiếp đó nó sẽ đối chiếu địa chỉ host nhận với địa chỉ đã được cấu hình cho nó (trong các thanh ghi địa chỉ MAC: MAADR0-5).


Каталог: data -> file -> 2015 -> Thang09
Thang09 -> VnDoc Tải tài liệu, văn bản pháp luật, biểu mẫu miễn phí
Thang09 -> VnDoc Tải tài liệu, văn bản pháp luật, biểu mẫu miễn phí
Thang09 -> LẬp số CÁc số TỰ nhiêN
Thang09 -> 1 Vai trò của nước sạch và tình trạng ô nhiễm nước
Thang09 -> Từ vựng tiếng Anh về các loài chim
Thang09 -> Bài 4: SỐ phần tử CỦa một tập hợP. TẬp hợp con I. Mục tiêu
Thang09 -> Bài 2: Hạt nhân nguyên tử nguyên tố hóa học đồng vị I. Mục tiêu: Kiến thức
Thang09 -> VnDoc Tải tài liệu, văn bản pháp luật, biểu mẫu miễn phí Từ vựng tiếng Anh về cơ thể người
Thang09 -> VnDoc Tải tài liệu, văn bản pháp luật, biểu mẫu miễn phí châu tiến lộc phần lịch sử thế giới cận – hiện đại

tải về 1.48 Mb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   10   11




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương