Chương I: Giới Thiệu Tổng Quan 1. Khái niệm cơ bản về Internet 1. Giới thiệu chung Internet là mạng của các máy tính trên toàn cầu được thành lập từ những năm 80 bắt nguồn từ mạng APARRNET của bộ quốc phòng Mỹ. Vào mạng Internet, bạn có thể tìm thấy nhiều tài liệu để nghiên cứu, học tập, trao đổi thư từ, đặt hàng, mua bán.
Một trong những mục tiêu của Internet là chia sẻ thông tin giữa những người dùng trên nhiều lĩnh vực khác nhau. Mỗi máy tính trên Internet được gọi là một host. Mỗi host có khả năng như nhau về truyền thông tới máy khác trên Internet. Một số host được nối tới mạng bằng đường nối Dial-up (quay số) tạm thời, số khác được nối bằng đường nối mạng thật sự 100% (như Ethernet, Tokenring.
Phân loại Các máy tính trên mạng được chia làm 2 nhóm Client và Server. Client: Máy khách trên mạng, chứa các chương trình Client Server: Máy phục vụ-Máy chủ. Chứa các chương trình Server, tài nguyên (tập tin, tài liệu.) dùng chung cho nhiều máy khách. Server luôn ở trạng thái chờ yêu cầu và đáp ứng yêu cầu của Client.
Internet Server: Là những server cung cấp các dịch vụ Internet như Web Server, Mail Server, FPT Server… 2. Các khái niệm cơ bản về Socket Socket là một cấu trúc phần mền trong nút mạng của mạng máy tính đóng vai trò là điểm cuối để gửi và nhận dữ liệu trên mạng. Cấu 8 trúc và thuộc tính của socket được xác định bởi giao diện lập trình ứng dụng (API) cho kiến trúc mạng. Các ổ cắm chỉ được tạo trong suốt thời gian tồn tại của một quy trình ứng dụng đang chạy.
Do tiêu chuẩn hóa các giao thức TCP/IP trong quá trình phát triển Internet, thuật ngữ network socket được sử dụng phổ biến nhất trong ngữ cảnh của bộ giao thức Internet và do đó thường được gọi là ổ cắm Internet. Socket được xác định bên ngoài đối với các host khác bằng socket address, là transport protocol, IP address, và số port. Tìm hiểu rõ hơn về Network Socket Giao diện lập trình ứng dụng (API) cho ngăn xếp giao thức mạng tạo một tay cầm cho mỗi socket được tạo bởi một ứng dụng, thường được gọi là socket descriptor. Tại thời điểm tạo với API, network socket liên kết với sự kết hợp của một loại giao thức mạng được sử dụng để truyền, địa chỉ mạng của máy lưu trữ và số port.
Ports là các tài nguyên được đánh số đại diện cho một loại cấu trúc phần mềm khác. Chúng được sử dụng làm loại dịch vụ và sau khi được tạo bởi một quy trình, chúng sẽ đóng vai trò là thành phần vị trí có thể định địa chỉ bên ngoài (từ mạng), để các máy chủ khác có thể thiết lập kết nối. Network Socket có thể được dành riêng cho các kết nối liên tục để liên lạc giữa hai nút hoặc chúng có thể tham gia vào liên lạc multicast và không kết nối. Giao diện lập trình ứng dụng (API) mà các chương trình sử dụng để giao tiếp với ngăn xếp giao thức, sử dụng network socket, được gọi là API socket.
Việc phát triển các chương trình ứng dụng sử dụng API này được gọi là lập trình network socket hoặc lập trình mạng. API socket Internet thường dựa trên tiêu chuẩn socket Berkeley. Trong tiêu chuẩn socket Berkeley, socket là một dạng mô tả tệp, do triết lý Unix rằng "mọi thứ đều là tệp" và sự tương đồng giữa socket và tệp. Cả hai đều có chức năng đọc, viết, mở và đóng.
Trong thực tế, sự khác biệt làm 9 căng thẳng sự tương tự và các giao diện khác nhau (gửi và nhận) được sử dụng trên một socket. Trong giao tiếp giữa các quá trình, mỗi đầu thường có socket riêng. Trong các giao thức Internet tiêu chuẩn TCP và UDP, socket address là sự kết hợp của địa chỉ IP và số port, giống như một đầu của kết nối điện thoại là sự kết hợp của số điện thoại và một số extension. Socket không cần có địa chỉ nguồn để chỉ gửi dữ liệu, nhưng nếu một chương trình liên kết socket với source address, thì socket có thể được sử dụng để nhận dữ liệu được gửi đến địa chỉ đó.
Dựa trên address, socket Internet phân phát các data packets cho ứng dụng thích hợp. Socket thường đề cập cụ thể đến socket Internet hoặc socket TCP. Socket Internet được đặc trưng tối thiếu bởi những điều sau đây: Địa chỉ socket cục bộ, bao gồm địa chỉ IP cục bộ và (đối với TCP và UDP, nhưng không phải IP) số port. Giao thức: Giao thức vận chuyển, ví dụ: TCP, UDP, IP.
Điều này có nghĩa là các điểm cuối (cục bộ hoặc từ xa) có cổng TCP 53 và cổng UDP 53 là các socket riêng biệt, trong khi IP không có port. Một socket đã được kết nối với một socket khác, ví dụ, trong quá trình thiết lập kết nối TCP, cũng có một địa chỉ socket từ xa. Transmission control protocol (TCP) 3. Sơ lược về TCP Internet đã và đang là một phần không thể thiếu trong cuộc sống hàng ngày của chúng ta.
Tuy nhiên, không phải ai cũng hiểu được tường tận về cách thức hoạt động của Internet. Phương thức truyền dẫn mà Internet đang sử dụng là phương thức TCP/IP, một trong những phương thức truyền dẫn phổ biến nhất hiện nay. TCP là một giao thức mạng quan trọng được sử dụng trong việc truyền dữ liệu qua một mạng nào đó. Một giao thức trong phạm vi mạng là 10 một tập hợp các quy tắc và trình tự kiểm soát việc thực hiện truyền dữ liệu sao cho tất cả mọi người trên thế giới bất kể vị trí địa lý, bất kể ứng dụng, phần mềm họ đang sử dụng đều có thể thao tác theo cùng một phương thức giống nhau được gọi là TCP.
TCP thường kết hợp với IP (Giao thức Internet) theo một cặp được gọi là TCP/IP. Bạn có thể bắt gặp cụm thuật ngữ này trong phần network setting trên máy tính, điện thoại thông minh hoặc các thiết bị cầm tay của mình. IP sẽ xử lý việc gán địa chỉ và chuyển tiếp các gói tin từ nguồn đến đích trong khi TCP kiểm soát độ tin cậy của truyền dẫn. Các kết nối TCP và các cổng Hai ứng dụng dùng TCP phải thiết lập một kết nối TCP trước khi dữ liệu có thể được truyền.
Mỗi kết nối sẽ tồn tại giữa một cặp TCP socket với socket được định nghĩa như là sự kết hợp của địa chỉ IP, cổng được dùng, giao thức lớp vận chuyển. Quá trình thiết lập kết nối, khởi tạo socket bao gồm giá trị cổng nguồn và cổng đích, chỉ số tuần tự và ACK. Hình 1 mô tả tiến trình bắt tay ba bước trong thiết lập một kết nối TCP và quá trình hủy một kết nối TCP. Hình 1 11 Trong quá trình thiết lập kết nối, hai host sẽ chọn lựa cổng, chọn lựa chỉ số tuần tự (sequence number) và dùng các chỉ số của TCP để nhận ra thông điệp trong quá trình bắt tay ba bước.
Đầu tiên, đối với vấn đề cổng, bên máy chủ (máy chủ) phải lắng nghe các yêu cầu kết nối từ máy yêu cầu (máy khách), trong trường hợp này là cổng 80. Phía máy khách sẽ chọn một cổng chưa dùng làm cổng nguồn, thường là giá trị 1024 hoặc lớn hơn. Lưu ý rằng khi so sánh các phân đoạn (segment) trong tiến trình trên, giá trị cổng là không đổi. Segment là đơn vị mô tả dữ liệu tại lớp vận chuyển được gọi là PDU (Protocol Data Unit).
Trong phần header của TCP có bao gồm vài trường có giá trị 1 bit, gọi là các cờ. Các cờ này phục vụ cho các mục đích khác nhau. Các cờ SYN và ACK sẽ chỉ ra một segment có phải là segment đầu tiên hay là thứ hai trong một kết nối TCP mới. Một segment có cờ SYN sẽ là segment đầu tiên trong một kết nối TCP.
Một segment có cả SYN và ACK sẽ là segment thứ hai trong một kết nối. Các cờ này cho phép các host dễ dàng nhận ra các yêu cầu kết nối mới. Chỉ số ban đầu có thể được gán về bất kỳ giá trị hợp lệ nào và thường không được gán về 0. Hãy nhớ rằng trong quá trình khôi phục lỗi, việc sử dụng các giá trị này là độc lập trong cả hai chiều.3 Cấu trúc header TCP Do là giao thức tin cậy nên cấu trúc gói tin của TCP rất phức tạp Source port và destination port (đều dài 16 bit): được sử dụng để định danh cho session của giao thức nào đó trên lớp ứng dụng đang được truyền tải trong TCP segment đang xét.
Acknowledge number (32 bit): : sùng để báo đã nhận được gói tin nào và mong nhận được byte mang số thứ tự nào tiếp theo. Các bit reserverd (4 bit): đều được thiết lập bằng 0. Các bit control (9 bit): các bit dùng để điều khiển các cờ (flag) ACK, cờ Sequence. Window size (16 bit): số lượng byte được thiết bị sẵn sàng tiếp nhận.
13 Checksum (16 bit): kiểm tra lỗi của toàn bộ TCP segment. Urgent pointer (16 bit): sử dụng trong trường hợp cần ưu tiên dữ liệu. Options (tối đa 32 bit): cho phép thêm vào TCP các tính năng khác Data: dữ liệu của lớp trên.4 Tính toán tổng kiểm tra Tổng kiểm tra có 16 bit cho cả phần header và dữ liệu, nó xác minh tính toàn vẹn dữ liệu của TCP. Tổng kiểm tra TCP cho IPv4 Khi TCP chạy trên IPv4 , phương thức được sử dụng để tính toán tổng kiểm tra được định nghĩa như sau: Trường tổng kiểm tra là phần bù 16 bit của tổng phần bù 1 của tất cả các từ 16 bit trong tiêu đề và văn bản.
Tính toán tổng kiểm tra cần đảm bảo căn chỉnh 16 bit của dữ liệu được tính tổng. Nếu một phân đoạn chứa một số lẻ các octet tiêu đề và văn bản, thì có thể đạt được sự liên kết bằng cách đệm octet cuối cùng bằng các số 0 ở bên phải của nó để tạo thành một từ 16 bit cho mục đích tổng kiểm tra. Phần đệm không được truyền như một phần của phân khúc. Trong khi tính toán tổng kiểm tra, trường tổng kiểm tra được thay thế bằng số không.
Tổng kiểm tra TCP cho IPv6 Khi TCP chạy trên , phương thức được sử dụng để tính toán tổng kiểm tra sẽ thay đổi: Bất kỳ giao thức truyền tải hoặc giao thức lớp trên nào khác bao gồm các địa chỉ từ tiêu đề IP trong tính toán tổng kiểm tra của nó phải được sửa đổi để sử dụng qua IPv6, để bao gồm các địa chỉ IPv6 128 bit thay vì địa chỉ IPv4 32 bit.