第6版计算机网络Transport Layer详解:服务原理与协议解析

版权申诉
0 下载量 161 浏览量 更新于2024-07-03 收藏 9.84MB PPT 举报
在计算机网络第6版的课件中,章节3专注于Transport Layer(传输层)的探讨。Transport Layer是计算机网络体系结构中的关键层次,它的主要目标是确保数据在网络中的可靠传输,同时实现多路复用、分用、流量控制和拥塞控制等重要功能。 首先,课程强调理解运输层服务背后的基本原理。其中,多路复用(Multiplexing)是指在单个物理连接上同时支持多个独立的通信会话,使得多个应用程序能够共享网络资源,提高效率。相反,分用(Demultiplexing)则是接收端将这些复用的数据流解耦,恢复到各自的源应用程序。 可靠性是Transport Layer的核心关注点之一,它通过错误检测和纠正机制,如TCP(Transmission Control Protocol)中的确认机制,确保数据在传输过程中的完整性。此外,流量控制(Flow Control)是为了避免发送方发送过快,导致接收方无法处理,通常由发送方向接收方发送一个信号,指示其接收能力。 拥塞控制(Congestion Control)是另一个关键概念,用于管理网络中的数据流量,防止过多的数据涌入导致网络拥塞。这通常涉及到发送方根据网络条件调整发送速率,以保持网络的稳定性和效率。 课程还将讲解互联网上的运输层协议,例如TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。TCP是一种面向连接的协议,提供可靠的数据传输服务,适合需要数据完整性和顺序性的应用;而UDP则是一种无连接的协议,它牺牲了可靠性来换取更高的传输速度,适用于实时应用,如视频流和在线游戏,因为它们可以容忍偶尔的数据丢失。 学习Transport Layer的内容对于理解网络通信的高效和可靠至关重要,无论是设计高效的网络应用还是优化网络性能,掌握这一层次的功能和协议都是必不可少的。在使用这些课件时,请确保尊重作者的版权要求,提及其来源,并在必要时注明改编或引用。

import requests import os from bs4 import BeautifulSoup class book_spider(): def __init__(self,root_url): self.root_url=root_url self.book_list=[] #一级页面中获取的数据(二级页面地址)存放于此列表 self.chapter_list=[] #二级页面中获取的数据(三级页面地址和章节名)存放于此列表 def get_url(url): while True: try: res=requests.get(url) if res.status_code==200: res.encoding =res.apparent_encoding print("页面获取成功") return res.text else: print("页面返回异常",res.status_code) except: print("页面获取错误") def get_book_list(self.url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list = [self.root_url+i for i in self.bbok_list] self.book_list.remove('http://10.1.88.252:7000/庆余年') print(book_list) def get_chapter_list(self,url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"chapter"}) for a in a_list: self.chapter_list.append((a["href"],a.text.replace("\n",""))) def get_content(self.chapter): url = self.root_url + chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res = self.get_url(url) html = BeautifulSoup(res,"html.parser") content = html.find("div",{"id":"content"}).text print(content) path = os.path.join(book_name,chapter[1]) with open(path,"w",encoding="utf8") as f: f.write(content) def main(): self.get_book_list(self.root_url) for book in self.book_list: self.get_chapter_liat(book) for chapter in chapter_list: self.get_content(chapter) book_s = book_spider("http://10.1.88.252:7000") book_s.main()这是一段爬虫代码,找出里面的错误并改正

2023-06-02 上传

帮我把一下代码设置一个合理请求头,并加入一个延时import requests import os from bs4 import BeautifulSoup class NovelDownloader: def __init__(self, root_url): self.root_url = root_url self.book_list = [] self.chapter_list = [] def get_url(self, url): while True: try: res = requests.get(url) if res.status_code == 200: print("页面获取成功!") return res.text else: print("页面返回异常!", res.status_code) except: print("页面获取错误!") def get_book_list(self): res = self.get_url(self.root_url) html = BeautifulSoup(res, "html.parser") a_list = html.find_all("a", {"class": "name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list = [self.root_url + i for i in self.book_list] self.book_list.remove('http://www.biquge5200.cc/') def get_chapter_list(self, url): res = self.get_url(url) html = BeautifulSoup(res, "html.parser") a_list = html.find_all("a", {"class": "chapter"}) for a in a_list: self.chapter_list.append((a["href"], a.text.replace("\n", ""))) def get_content(self, chapter): url = self.root_url + chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res = self.get_url(url) html = BeautifulSoup(res, "html.parser") content = html.find("div", {"id": "content"}).text print(content) path = os.path.join(book_name, chapter[1]) with open(path, "w", encoding="utf8") as f: f.write(content) def main(self): self.get_book_list() for book in self.book_list: self.get_chapter_list(book) for chapter in self.chapter_list: self.get_content(chapter) if __name__ == '__main__': root_url = "http://www.biquge5200.cc/" nd = NovelDownloader(root_url) nd.main()

2023-06-02 上传