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

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

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

探索學習新天地,共享知識資源!

0 提交作業(yè)
0 布置作業(yè)
0 滿分作業(yè)
得分 100
學習任務

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

服務器端 #include // 標準輸入輸出頭文件,包含 printf、perror 等 #include // 包含 exit、malloc 等函數(shù) #include // 包含字符串處理函數(shù),如 memset、strlen #include // 包含 close、read、write 等 Unix/Linux 系統(tǒng)調(diào)用 #include // 包含 IP 地址轉(zhuǎn)換函數(shù),如 inet_ntop、htons #include // 包含 socket 函數(shù)與結(jié)構(gòu)體定義 #define SERVER_PORT 8890 // 服務端監(jiān)聽的端口號 #define BACKLOG 5 // 最大連接請求隊列長度 #define BUFFER_SIZE 1024 // 緩沖區(qū)最大長度(接收/發(fā)送) // 創(chuàng)建 TCP 服務器監(jiān)聽 socket,并綁定指定 IP 和端口 int tcp_socket_create(const char *ip, int port, int backlog) { int sockfd = socket(AF_INET, SOCK_STREAM, 0); // 創(chuàng)建 IPv4、TCP 套接字 if (sockfd < 0) { perror("socket failed"); // 創(chuàng)建失敗時輸出錯誤信息 return -1; } // 設置 socket 地址重用選項,防止 bind 報錯 "Address already in use" int opt = 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); // 初始化結(jié)構(gòu)體為 0 addr.sin_family = AF_INET; // 設置地址族為 IPv4 addr.sin_addr.s_addr = INADDR_ANY; // 監(jiān)聽所有本地 IP 地址(0.0.0.0) addr.sin_port = htons(SERVER_PORT); // 設置監(jiān)聽端口,使用網(wǎng)絡字節(jié)序 // 綁定 socket 到本地地址與端口 if (bind(sockfd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("bind failed"); // 綁定失敗 close(sockfd); return -1; } // 啟動監(jiān)聽,將 socket 設為被動連接模式 if (listen(sockfd, backlog) < 0) { perror("listen failed"); // 監(jiān)聽失敗 close(sockfd); return -1; } return sockfd; // 返回監(jiān)聽套接字 } // 處理每個客戶端連接的函數(shù) void handle_client(int conn_fd, struct sockaddr_in *client_addr) { char buffer[BUFFER_SIZE]; // 接收客戶端消息的緩沖區(qū) char client_ip[INET_ADDRSTRLEN]; // 存儲客戶端 IP 字符串 // 將客戶端 IP 地址轉(zhuǎn)換為可讀字符串格式 inet_ntop(AF_INET, &client_addr->sin_addr, client_ip, sizeof(client_ip)); // 將端口號從網(wǎng)絡字節(jié)序轉(zhuǎn)換為主機字節(jié)序 int client_port = ntohs(client_addr->sin_port); printf("客戶端已連接:%s:%d\n", client_ip, client_port); // 循環(huán)接收客戶端消息并回顯 while (1) { // 接收客戶端消息 ssize_t len = recv(conn_fd, buffer, sizeof(buffer) - 1, 0); if (len < 0) { printf("客戶端斷開連接\n"); // 接收失敗 break; } buffer[len] = '\0'; // 添加字符串結(jié)束符,構(gòu)成合法 C 字符串 printf("收到消息:%s\n", buffer); // 構(gòu)造服務端回顯響應內(nèi)容 char reply[BUFFER_SIZE]; snprintf(reply, sizeof(reply), "服務端已收到: %s", buffer); // 將回應內(nèi)容發(fā)回客戶端 send(conn_fd, reply, strlen(reply), 0); } // 關(guān)閉客戶端連接 socket close(conn_fd); } // 主函數(shù):程序入口 int main(int argc, char *argv[]) { // 創(chuàng)建監(jiān)聽 socket,并綁定本地端口 int listen_fd = tcp_socket_create("0.0.0.0", SERVER_PORT, BACKLOG); if (listen_fd < 0) { fprintf(stderr, "監(jiān)聽 socket 創(chuàng)建失敗。退出\n"); return -1; } printf("服務端啟動,監(jiān)聽端口 %d\n", SERVER_PORT); // 主循環(huán):接收并處理客戶端連接 while (1) { struct sockaddr_in client_addr; // 用于存儲客戶端地址信息 socklen_t client_len = sizeof(client_addr); // 接受客戶端連接請求,阻塞等待連接 int conn_fd = accept(listen_fd, (struct sockaddr *) &client_addr, &client_len); if (conn_fd < 0) { perror("accept failed"); // 接收失敗 continue; } // 處理客戶端連接 handle_client(conn_fd, &client_addr); } // 關(guān)閉監(jiān)聽 socket close(listen_fd); return 0; } 客戶端 #include // 標準輸入輸出,如 printf、fprintf #include // 包含 exit 函數(shù) #include // 字符串處理,如 strlen、strcspn #include // 包含 close 函數(shù) #include // 網(wǎng)絡地址轉(zhuǎn)換函數(shù),如 inet_pton #include // socket API 函數(shù) #define SERVER_IP "127.0.0.1" // 服務器 IP 地址(本地環(huán)回地址) #define SERVER_PORT 8890 // 服務器端口號(需與服務端保持一致) #define BUFFER_SIZE 1024 // 緩沖區(qū)最大長度 // 創(chuàng)建 TCP 客戶端 socket 并連接服務器 int tcp_client_connect(const char *ip, int port) { // 創(chuàng)建 socket(IPv4 + TCP) int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("socket 創(chuàng)建失敗"); return -1; } // 配置服務器地址結(jié)構(gòu) struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); // 清零初始化 server_addr.sin_family = AF_INET; // IPv4 server_addr.sin_port = htons(port); // 設置端口(轉(zhuǎn)為網(wǎng)絡字節(jié)序) // 將 IP 字符串轉(zhuǎn)換為二進制形式 if (inet_pton(AF_INET, ip, &server_addr.sin_addr)

得分 100
討論題

jelasin 的學生作業(yè):

三次握手的過程: 第一次握手:客戶端發(fā)送SYN報文段,序列號為x 第二次握手:服務器回復SYN+ACK報文段,確認號為x+1,序列號為y 第三次握手:客戶端發(fā)送ACK報文段,確認號為y+1 三次握手的必要性: 確認雙方的收發(fā)能力 第一次握手:確認客戶端發(fā)送能力、服務器接收能力 第二次握手:確認服務器發(fā)送能力、客戶端接收能力 第三次握手:再次確認客戶端發(fā)送能力、服務器接收能力 防止舊連接請求的干擾 場景:客戶端發(fā)送連接請求A,網(wǎng)絡延遲導致超時重發(fā)請求B 如果只有兩次握手: - 請求B先到達并建立連接 - 連接結(jié)束后,延遲的請求A到達 - 服務器誤認為這是新的連接請求并建立連接 - 造成資源浪費 三次握手解決方案: - 即使舊請求A到達,服務器發(fā)送SYN+ACK - 但客戶端已經(jīng)處理完連接B,會忽略這個響應 - 沒有第三次握手,連接不會建立 同步序列號 雙方需要交換初始序列號,用于后續(xù)的數(shù)據(jù)傳輸和確認。 四次揮手的過程: 第一次揮手:客戶端發(fā)送FIN報文段 第二次揮手:服務器發(fā)送ACK確認 第三次揮手:服務器發(fā)送FIN報文段 第四次揮手:客戶端發(fā)送ACK確認 四次揮手的原因: TCP是全雙工通信 建立連接時: - 一個SYN+ACK可以同時完成"同意連接"和"發(fā)送自己的連接請求" 斷開連接時: - 收到FIN只能確認對方要關(guān)閉發(fā)送方向 - 但自己可能還有數(shù)據(jù)要發(fā)送 - 所以ACK(確認)和FIN(關(guān)閉)必須分開 數(shù)據(jù)傳輸?shù)耐暾?// 服務器端的處理邏輯 recv_FIN_from_client() { send_ACK(); // 第二次揮手:確認收到客戶端的FIN // 此時可能還有數(shù)據(jù)要發(fā)送給客戶端 while(has_data_to_send()) { send_data(); } send_FIN(); // 第三次揮手:發(fā)送自己的FIN } 狀態(tài)轉(zhuǎn)換的需要 客戶端狀態(tài):ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED 服務端狀態(tài):ESTABLISHED -> CLOSE_WAIT -> LAST_ACK -> CLOSED

得分 100
學習任務

jelasin 的學生作業(yè):

seq (Sequence Number) - 序列號 含義: 32位字段,標識發(fā)送方發(fā)送的數(shù)據(jù)字節(jié)流中第一個字節(jié)的序號 作用: 確保數(shù)據(jù)的有序性和完整性 理解: 就像給每個數(shù)據(jù)包編號,接收方可以按正確順序重組數(shù)據(jù)。即使網(wǎng)絡中數(shù)據(jù)包亂序到達,也能正確還原原始數(shù)據(jù)流 ack (Acknowledgment Number) - 確認號 含義: 32位字段,表示期望接收的下一個序列號 作用: 告訴發(fā)送方"我已經(jīng)收到了序號X之前的所有數(shù)據(jù),請發(fā)送序號X的數(shù)據(jù)" 理解: 這是一種"累積確認"機制,不僅確認當前包,還確認之前所有包都已正確接收 ACK (Acknowledgment Flag) - 確認標志位 含義: 1位標志位,當設置為1時表示ack字段有效 作用: 指示該TCP段是否攜帶有效的確認信息 理解: 只有當ACK=1時,接收方才會處理ack字段。除了連接建立的第一個SYN包,幾乎所有TCP包都會設置ACK標志 SYN (Synchronize Flag) - 同步標志位 含義: 1位標志位,用于建立連接時的序列號同步 作用: 發(fā)起連接請求,同步雙方的初始序列號 理解: TCP三次握手的核心??蛻舳税l(fā)送SYN=1開始連接,服務器回復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 的學生作業(yè):

OSI七層模型 物理層(Physical Layer) 負責比特流的傳輸,定義電氣、機械、功能規(guī)范 涉及硬件接口、電壓、時序等 數(shù)據(jù)鏈路層(Data Link Layer) 提供可靠的點到點數(shù)據(jù)傳輸 錯誤檢測與糾正、流量控制 典型協(xié)議:Ethernet、PPP、HDLC 網(wǎng)絡層(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 應用層(Application Layer) 為用戶提供網(wǎng)絡服務接口 典型協(xié)議:HTTP、FTP、SMTP、DNS TCP/IP五層模型 物理層(Physical Layer) 對應OSI物理層 數(shù)據(jù)鏈路層(Data Link Layer) 對應OSI數(shù)據(jù)鏈路層 網(wǎng)絡層(Network Layer) 對應OSI網(wǎng)絡層 主要是IP協(xié)議 傳輸層(Transport Layer) 對應OSI傳輸層 主要是TCP/UDP協(xié)議 應用層(Application Layer) 合并了OSI的會話層、表示層、應用層 包含HTTP、FTP、SMTP等協(xié)議

微信客服

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

幫助反饋 APP下載

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

公眾號

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