第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業(yè)社區(qū)

探索學(xué)習(xí)新天地,共享知識資源!

0 提交作業(yè)
0 布置作業(yè)
0 滿分作業(yè)
得分 100
學(xué)習(xí)任務(wù)

jelasin 的學(xué)生作業(yè):

seq (Sequence Number) - 序列號 含義: 32位字段,標識發(fā)送方發(fā)送的數(shù)據(jù)字節(jié)流中第一個字節(jié)的序號 作用: 確保數(shù)據(jù)的有序性和完整性 理解: 就像給每個數(shù)據(jù)包編號,接收方可以按正確順序重組數(shù)據(jù)。即使網(wǎng)絡(luò)中數(shù)據(jù)包亂序到達,也能正確還原原始數(shù)據(jù)流 ack (Acknowledgment Number) - 確認號 含義: 32位字段,表示期望接收的下一個序列號 作用: 告訴發(fā)送方"我已經(jīng)收到了序號X之前的所有數(shù)據(jù),請發(fā)送序號X的數(shù)據(jù)" 理解: 這是一種"累積確認"機制,不僅確認當前包,還確認之前所有包都已正確接收 ACK (Acknowledgment Flag) - 確認標志位 含義: 1位標志位,當設(shè)置為1時表示ack字段有效 作用: 指示該TCP段是否攜帶有效的確認信息 理解: 只有當ACK=1時,接收方才會處理ack字段。除了連接建立的第一個SYN包,幾乎所有TCP包都會設(shè)置ACK標志 SYN (Synchronize Flag) - 同步標志位 含義: 1位標志位,用于建立連接時的序列號同步 作用: 發(fā)起連接請求,同步雙方的初始序列號 理解: TCP三次握手的核心??蛻舳税l(fā)送SYN=1開始連接,服務(wù)器回復(fù)SYN=1,ACK=1,最后客戶端確認ACK=1 FIN (Finish Flag) - 結(jié)束標志位 含義: 1位標志位,表示發(fā)送方?jīng)]有更多數(shù)據(jù)要發(fā)送 作用: 優(yōu)雅地關(guān)閉TCP連接 理解: 相當于說"我的話說完了",但連接還沒完全斷開,需要等對方也發(fā)送FIN才能完全關(guān)閉

得分 100
討論題

jelasin 的學(xué)生作業(yè):

OSI七層模型 物理層(Physical Layer) 負責(zé)比特流的傳輸,定義電氣、機械、功能規(guī)范 涉及硬件接口、電壓、時序等 數(shù)據(jù)鏈路層(Data Link Layer) 提供可靠的點到點數(shù)據(jù)傳輸 錯誤檢測與糾正、流量控制 典型協(xié)議:Ethernet、PPP、HDLC 網(wǎng)絡(luò)層(Network Layer) 路徑選擇和邏輯地址 典型協(xié)議:IP、ICMP、ARP 傳輸層(Transport Layer) 端到端的可靠傳輸 典型協(xié)議:TCP、UDP 會話層(Session Layer) 建立、管理、終止會話 典型協(xié)議:NetBIOS、RPC 表示層(Presentation Layer) 數(shù)據(jù)格式轉(zhuǎn)換、加密解密、壓縮 典型協(xié)議:SSL/TLS、JPEG、ASCII 應(yīng)用層(Application Layer) 為用戶提供網(wǎng)絡(luò)服務(wù)接口 典型協(xié)議:HTTP、FTP、SMTP、DNS TCP/IP五層模型 物理層(Physical Layer) 對應(yīng)OSI物理層 數(shù)據(jù)鏈路層(Data Link Layer) 對應(yīng)OSI數(shù)據(jù)鏈路層 網(wǎng)絡(luò)層(Network Layer) 對應(yīng)OSI網(wǎng)絡(luò)層 主要是IP協(xié)議 傳輸層(Transport Layer) 對應(yīng)OSI傳輸層 主要是TCP/UDP協(xié)議 應(yīng)用層(Application Layer) 合并了OSI的會話層、表示層、應(yīng)用層 包含HTTP、FTP、SMTP等協(xié)議

得分 100
學(xué)習(xí)任務(wù)

jelasin 的學(xué)生作業(yè):

網(wǎng)絡(luò)層判斷 當主機A要與主機B通信時,首先通過子網(wǎng)掩碼(通常是255.255.255.0)判斷目標主機是否在同一網(wǎng)段: A的網(wǎng)絡(luò)地址: 192.168.0.88 & 255.255.255.0 = 192.168.0.0 B的網(wǎng)絡(luò)地址: 192.168.0.66 & 255.255.255.0 = 192.168.0.0 結(jié)果相同,確認在同一局域網(wǎng)內(nèi)。 ARP地址解析 由于是同網(wǎng)段通信,主機A需要獲取主機B的MAC地址: ARP緩存查詢:首先檢查本地ARP表(arp -a命令可查看) ARP請求:如果緩存中沒有,發(fā)送ARP廣播請求 源MAC: A的MAC地址 目標MAC: FF:FF:FF:FF:FF:FF (廣播) ARP請求: "誰是192.168.0.66?請告訴192.168.0.88" ARP應(yīng)答:主機B收到后單播回復(fù)自己的MAC地址 數(shù)據(jù)封裝過程 應(yīng)用層數(shù)據(jù)經(jīng)過協(xié)議棧逐層封裝: 應(yīng)用層 | HTTP/SSH/FTP等應(yīng)用數(shù)據(jù) 傳輸層 | TCP/UDP頭部 + 應(yīng)用數(shù)據(jù) 網(wǎng)絡(luò)層 | IP頭部 + TCP/UDP數(shù)據(jù) 數(shù)據(jù)鏈路層| 以太網(wǎng)頭部 + IP數(shù)據(jù) + FCS校驗 物理層 | 電信號/光信號傳輸 二層交換轉(zhuǎn)發(fā) 數(shù)據(jù)幀到達交換機后: MAC地址學(xué)習(xí):交換機學(xué)習(xí)源MAC地址和對應(yīng)端口 CAM表查詢:查找目標MAC地址對應(yīng)的端口 單播轉(zhuǎn)發(fā):如果找到則單播轉(zhuǎn)發(fā),否則洪泛到所有端口 接收端處理 主機B收到數(shù)據(jù)幀后: MAC地址過濾:網(wǎng)卡檢查目標MAC是否匹配 逐層解封裝:從數(shù)據(jù)鏈路層到應(yīng)用層逐層剝離頭部 應(yīng)用層處理:最終將數(shù)據(jù)交給對應(yīng)的應(yīng)用程序

得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include // 標準輸入輸出函數(shù),如 printf、perror #include // 標準庫函數(shù),如 malloc、exit #include // 字符串處理函數(shù),如 memset #include // UNIX 系統(tǒng)調(diào)用,如 close #include // 提供網(wǎng)絡(luò)字節(jié)序、地址轉(zhuǎn)換函數(shù) #include // 提供 socket、bind、listen 等 API // ======================================================================= // 函數(shù)名稱:tcp_socket_create // 函數(shù)功能:封裝 TCP 服務(wù)端 socket 的創(chuàng)建、綁定和監(jiān)聽過程 // 輸入?yún)?shù): // ip —— 要綁定的 IP 字符串,如 “0.0.0.0” // port —— 要監(jiān)聽的端口號,如 8888 // backlog —— 最大等待連接隊列長度 // 返回值:成功返回監(jiān)聽 socket 文件描述符;失敗返回 -1 并打印錯誤信息 // ======================================================================= int tcp_socket_create(const char *ip, int port, int backlog) { int sockfd; struct sockaddr_in addr; // 1. 創(chuàng)建 TCP socket(使用 IPv4 + 面向連接) sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("socket 創(chuàng)建失敗"); return -1; } // 2. 設(shè)置 socket 選項 —— 允許端口復(fù)用(防止 TIME_WAIT 占用) int opt = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) { perror("setsockopt 設(shè)置失敗"); close(sockfd); return -1; } // 3. 清零地址結(jié)構(gòu)體,并配置 IP + 端口 + 協(xié)議族 memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; // IPv4 addr.sin_port = htons(port); // 主機字節(jié)序 → 網(wǎng)絡(luò)字節(jié)序 // 將字符串形式的 IP 轉(zhuǎn)換為網(wǎng)絡(luò)地址結(jié)構(gòu)(支持 127.0.0.1, 0.0.0.0 等) if (inet_pton(AF_INET, ip, &addr.sin_addr)

得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include // 標準輸入輸出函數(shù),如 printf、perror #include // 提供 exit() 等函數(shù) #include // 字符串處理函數(shù),如 memset、strcmp #include // 提供 close()、read()、write() 等函數(shù) #include // 提供網(wǎng)絡(luò)地址轉(zhuǎn)換函數(shù),如 inet_ntoa、htons // ----------------- 宏定義 ----------------- #define SERVER_PORT 8888 // 服務(wù)器監(jiān)聽的端口號 #define BUFFER_SIZE 1024 // 數(shù)據(jù)緩沖區(qū)大小 #define BACKLOG 5 // 監(jiān)聽隊列的最大長度(排隊等待 accept 的客戶端數(shù)量) int main() { int listen_fd, conn_fd; // listen_fd:監(jiān)聽 socket;conn_fd:已連接 socket struct sockaddr_in server_addr, client_addr; // 存儲服務(wù)器/客戶端的 IP 和端口 socklen_t client_len; // 用于記錄 client_addr 的長度 char buffer[BUFFER_SIZE]; // 數(shù)據(jù)緩沖區(qū),用于接收與發(fā)送 // ---------- 1. 創(chuàng)建 TCP socket ---------- listen_fd = socket(AF_INET, SOCK_STREAM, 0); // 創(chuàng)建面向連接(TCP)的 IPv4 套接字 if (listen_fd < 0) { perror("socket 創(chuàng)建失敗"); // 若創(chuàng)建失敗,輸出錯誤信息并退出 exit(1); } // ---------- 2. 配置服務(wù)器地址 ---------- memset(&server_addr, 0, sizeof(server_addr)); // 清空 server_addr 結(jié)構(gòu)體 server_addr.sin_family = AF_INET; // 使用 IPv4 協(xié)議族 server_addr.sin_addr.s_addr = INADDR_ANY; // 監(jiān)聽本機所有網(wǎng)卡上的連接 server_addr.sin_port = htons(SERVER_PORT); // 設(shè)置監(jiān)聽端口(主機字節(jié)序 → 網(wǎng)絡(luò)字節(jié)序) // ---------- 3. 綁定 socket ---------- if (bind(listen_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { perror("bind 綁定失敗"); // 綁定失敗通常是端口被占用 close(listen_fd); // 關(guān)閉 socket exit(1); } // ---------- 4. 啟動監(jiān)聽 ---------- if (listen(listen_fd, BACKLOG) < 0) { perror("listen 監(jiān)聽失敗"); close(listen_fd); exit(1); } printf("服務(wù)器已啟動,監(jiān)聽端口 %d...\n", SERVER_PORT); // ---------- 5. 主循環(huán):接受客戶端連接 ---------- while (1) { client_len = sizeof(client_addr); // 設(shè)置 client_len 的初始值(必須) // 等待客戶端連接(阻塞),返回用于通信的新 socket conn_fd = accept(listen_fd, (struct sockaddr*)&client_addr, &client_len); if (conn_fd < 0) { perror("accept 失敗"); // accept 失敗也不會退出服務(wù),繼續(xù)等待下一個連接 continue; } // 打印客戶端的 IP 和端口(便于調(diào)試) printf("客戶端已連接:%s:%d\n", inet_ntoa(client_addr.sin_addr), // 將 IP 轉(zhuǎn)為字符串 ntohs(client_addr.sin_port)); // 將端口從網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)為主機字節(jié)序 // ---------- 6. 收發(fā)消息循環(huán) ---------- while (1) { // 接收客戶端發(fā)來的數(shù)據(jù) ssize_t len = recv(conn_fd, buffer, sizeof(buffer) - 1, 0); if (len

得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include // 標準輸入輸出函數(shù) #include // 提供 exit() 等函數(shù) #include // 提供 memset(), strcmp() 等字符串處理函數(shù) #include // 提供 close() 函數(shù) #include // 提供網(wǎng)絡(luò)地址處理函數(shù),如 inet_ntoa() // 宏定義 #define SERVER_PORT 8888 // 服務(wù)器監(jiān)聽端口號 #define BUFFER_SIZE 1024 // 緩沖區(qū)大小 #define BACKLOG 5 // 監(jiān)聽隊列的最大長度(允許同時排隊連接的客戶端數(shù)量) int main() { int listen_fd, conn_fd; // listen_fd:監(jiān)聽 socket,conn_fd:與客戶端通信的 socket struct sockaddr_in server_addr, client_addr; // server_addr:本地 IP/端口,client_addr:客戶端 IP/端口 socklen_t client_len; // 用于存儲客戶端地址結(jié)構(gòu)體的大小 char buffer[BUFFER_SIZE]; // 用于接收/發(fā)送數(shù)據(jù)的緩沖區(qū) // 1. 創(chuàng)建 TCP socket(AF_INET 表示 IPv4,SOCK_STREAM 表示 TCP) listen_fd = socket(AF_INET, SOCK_STREAM, 0); if (listen_fd < 0) { perror("socket 創(chuàng)建失敗"); exit(1); // 程序異常退出 } // 2. 配置服務(wù)器地址結(jié)構(gòu)體(清空 → 設(shè)置地址族、IP、端口) memset(&server_addr, 0, sizeof(server_addr)); // 清空結(jié)構(gòu)體 server_addr.sin_family = AF_INET; // 使用 IPv4 地址 server_addr.sin_addr.s_addr = INADDR_ANY; // 監(jiān)聽本機任意 IP 地址(即所有網(wǎng)卡) server_addr.sin_port = htons(SERVER_PORT); // 設(shè)置監(jiān)聽端口(需要使用網(wǎng)絡(luò)字節(jié)序) // 3. 綁定 socket 到指定的 IP 地址和端口 if (bind(listen_fd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) { perror("bind 綁定失敗"); close(listen_fd); // 關(guān)閉 socket exit(1); } // 4. 開始監(jiān)聽端口,準備接收客戶端連接 if (listen(listen_fd, BACKLOG) < 0) { perror("listen 監(jiān)聽失敗"); close(listen_fd); exit(1); } printf("服務(wù)器已啟動,監(jiān)聽端口 %d...\n", SERVER_PORT); // 5. 主循環(huán):等待客戶端連接 while (1) { client_len = sizeof(client_addr); // 初始化地址長度 // 阻塞等待客戶端連接,成功時返回用于通信的 conn_fd conn_fd = accept(listen_fd, (struct sockaddr *) &client_addr, &client_len); if (conn_fd < 0) { perror("accept 失敗"); continue; // 本次失敗后繼續(xù)等待下一個連接 } // 打印客戶端的 IP 和端口 printf("客戶端已連接:%s:%d\n", inet_ntoa(client_addr.sin_addr), // IP 地址轉(zhuǎn)為字符串 ntohs(client_addr.sin_port)); // 端口號轉(zhuǎn)為主機字節(jié)序 // 6. 接收客戶端消息并回應(yīng)(連接期間的通信循環(huán)) while (1) { // 接收客戶端發(fā)送的數(shù)據(jù) ssize_t len = recv(conn_fd, buffer, sizeof(buffer) - 1, 0); if (len

得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include // 標準輸入輸出函數(shù) #include // 提供 exit() 等函數(shù) #include // 提供 memset(), strcmp() 等字符串處理函數(shù) #include // 提供 close() 函數(shù) #include // 提供網(wǎng)絡(luò)地址處理函數(shù),如 inet_ntoa() // 宏定義 #define SERVER_PORT 8888 // 服務(wù)器監(jiān)聽端口號 #define BUFFER_SIZE 1024 // 緩沖區(qū)大小 #define BACKLOG 5 // 監(jiān)聽隊列的最大長度(允許同時排隊連接的客戶端數(shù)量) int main() { int listen_fd, conn_fd; // listen_fd:監(jiān)聽 socket,conn_fd:與客戶端通信的 socket struct sockaddr_in server_addr, client_addr; // server_addr:本地 IP/端口,client_addr:客戶端 IP/端口 socklen_t client_len; // 用于存儲客戶端地址結(jié)構(gòu)體的大小 char buffer[BUFFER_SIZE]; // 用于接收/發(fā)送數(shù)據(jù)的緩沖區(qū) // 1. 創(chuàng)建 TCP socket(AF_INET 表示 IPv4,SOCK_STREAM 表示 TCP) listen_fd = socket(AF_INET, SOCK_STREAM, 0); if (listen_fd < 0) { perror("socket 創(chuàng)建失敗"); exit(1); // 程序異常退出 } // 2. 配置服務(wù)器地址結(jié)構(gòu)體(清空 → 設(shè)置地址族、IP、端口) memset(&server_addr, 0, sizeof(server_addr)); // 清空結(jié)構(gòu)體 server_addr.sin_family = AF_INET; // 使用 IPv4 地址 server_addr.sin_addr.s_addr = INADDR_ANY; // 監(jiān)聽本機任意 IP 地址(即所有網(wǎng)卡) server_addr.sin_port = htons(SERVER_PORT); // 設(shè)置監(jiān)聽端口(需要使用網(wǎng)絡(luò)字節(jié)序) // 3. 綁定 socket 到指定的 IP 地址和端口 if (bind(listen_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { perror("bind 綁定失敗"); close(listen_fd); // 關(guān)閉 socket exit(1); } // 4. 開始監(jiān)聽端口,準備接收客戶端連接 if (listen(listen_fd, BACKLOG) < 0) { perror("listen 監(jiān)聽失敗"); close(listen_fd); exit(1); } printf("服務(wù)器已啟動,監(jiān)聽端口 %d...\n", SERVER_PORT); // 5. 主循環(huán):等待客戶端連接 while (1) { client_len = sizeof(client_addr); // 初始化地址長度 // 阻塞等待客戶端連接,成功時返回用于通信的 conn_fd conn_fd = accept(listen_fd, (struct sockaddr*)&client_addr, &client_len); if (conn_fd < 0) { perror("accept 失敗"); continue; // 本次失敗后繼續(xù)等待下一個連接 } // 打印客戶端的 IP 和端口 printf("客戶端已連接:%s:%d\n", inet_ntoa(client_addr.sin_addr), // IP 地址轉(zhuǎn)為字符串 ntohs(client_addr.sin_port)); // 端口號轉(zhuǎn)為主機字節(jié)序 // 6. 接收客戶端消息并回應(yīng)(連接期間的通信循環(huán)) while (1) { // 接收客戶端發(fā)送的數(shù)據(jù) ssize_t len = recv(conn_fd, buffer, sizeof(buffer) - 1, 0); if (len

得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include // 提供標準輸入輸出函數(shù)(如 printf) #include // 提供 exit(), malloc() 等函數(shù) #include // 提供字符串處理函數(shù),如 memset(), strcmp() #include // 提供 close(), read(), write() 等函數(shù) #include // 提供 IP 地址轉(zhuǎn)換與套接字相關(guān)函數(shù)(如 inet_pton) // ------------------ 常量定義 ------------------ #define SERVER_IP "127.0.0.1" // 要連接的服務(wù)器 IP(本地回環(huán)地址) #define SERVER_PORT 8888 // 服務(wù)器端口號 #define BUFFER_SIZE 1024 // 接收/發(fā)送緩沖區(qū)大小 int main() { int sockfd; // 與服務(wù)器通信的 socket 文件描述符 struct sockaddr_in server_addr; // 服務(wù)器地址結(jié)構(gòu)體 char buffer[BUFFER_SIZE]; // 數(shù)據(jù)緩沖區(qū) // ---------- 1. 創(chuàng)建 TCP socket ---------- sockfd = socket(AF_INET, SOCK_STREAM, 0); // 創(chuàng)建面向連接的 IPv4 套接字 if (sockfd < 0) { perror("socket 創(chuàng)建失敗"); // 如果創(chuàng)建失敗,打印錯誤并退出 exit(1); } // ---------- 2. 配置服務(wù)器地址 ---------- memset(&server_addr, 0, sizeof(server_addr)); // 清空結(jié)構(gòu)體內(nèi)存 server_addr.sin_family = AF_INET; // 設(shè)置地址族為 IPv4 server_addr.sin_port = htons(SERVER_PORT); // 設(shè)置端口號(主機字節(jié)序 → 網(wǎng)絡(luò)字節(jié)序) inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr); // IP 地址字符串 → 網(wǎng)絡(luò)格式 // ---------- 3. 主動連接服務(wù)器 ---------- if (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { perror("連接服務(wù)器失敗"); // 若連接失敗,關(guān)閉 socket 并退出 close(sockfd); exit(1); } printf("已連接服務(wù)器 %s:%d\n", SERVER_IP, SERVER_PORT); // ---------- 4. 通信主循環(huán) ---------- while (1) { printf("請輸入消息(exit 退出):"); fflush(stdout); // 清空輸出緩沖區(qū),確保提示立即打印 // 從標準輸入讀取一行字符串到 buffer 中 if (fgets(buffer, sizeof(buffer), stdin) == NULL) break; // 移除換行符(fgets 會保留 \n) buffer[strcspn(buffer, "\n")] = '\0'; // ---------- 4.1 判斷是否是退出指令 ---------- if (strcmp(buffer, "exit") == 0) { send(sockfd, buffer, strlen(buffer), 0); // 通知服務(wù)器退出 printf("客戶端已斷開連接。\n"); break; // 跳出通信循環(huán),準備退出 } // ---------- 4.2 向服務(wù)器發(fā)送消息 ---------- send(sockfd, buffer, strlen(buffer), 0); // 發(fā)送用戶輸入的內(nèi)容給服務(wù)器 // ---------- 4.3 等待服務(wù)器響應(yīng) ---------- ssize_t len = recv(sockfd, buffer, sizeof(buffer) - 1, 0); // 接收服務(wù)器返回的數(shù)據(jù) if (len

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號