学习C语言的网站
VC知识库
提供Visual C++程序源代码、编程文摘、及其它VC资料,还有论坛交流。
唯C世界
主要包括C语言教室、C数据结构、软件下载、技术论坛等,这里的论坛不错的。
VC大本营
VC爱好者制作的网站,规划还是挺系统的,内容也不错。
C语言之家
提供源程序代码和学习资料等下载,有论坛交流。
C++ Builder开发者
提供控件、源代码、系统补丁、电子书籍等下载,另有控件使用及编程技巧。
Visual C++技巧与源代码
专为开发者设计,大量的源代码、全面的详细介绍。
单片机的C语言
专题论坛,单片机的C语言,Keil C解密版下载。
VC之路
综合软件开发网,以VC++编程为主。
Visual C++开发指南
是一个与Visual C++开发相关的专业网站,本站目前的形式主要以开发资源和开发论坛为主,主要是为了给广大的开发人员提供一个获取资源和自由交流的场所。
VC编程网
VC编程学习的网站,提供几大专题和丰富的文档资料以及很好的论坛。
C++ Builder编程俱乐部
收集的编程技巧、例程、控件等虽然量不多,但都是站长精心筛选的;网站宗旨是与广大编程爱好者们一同进步。
VCCode
提供C/C++源代码与技术文章,天天更新,龙堂提供技术交流社区。
关于学习一级计算机的专业学习网站有哪些。
大学计算机专业课程:
电子技术、离散数学、程序设计、数据结构、操作系统、计算机组成原理、微机系统、计算机系统结构、编译原理、计算机网络、数据库系统、工程、人工智能、计算机图形学、数字图像处理、计算机通讯原理、多媒体信息处理技术、数字信号处理、计算机控制、网络计算、算法设计与分析、信息安全、应用密码学基础、信息对抗、移动计算、数论与有限域基础、人机界面设计、面向对象程序设计等。
大学计算机专业是计算机硬件与相结合、面向系统、侧重应用的宽口径专业。计算机学科的特色主要体现在:理论性强,实践性强,发展迅速。
上网课用什么软件
上网课用的软件有以下几种:1、《钉钉》。此为阿里巴巴旗下开发的线上沟通类app,可以用于工作会议、网课直播等方面,流畅的画面与声音可以保证信息的实时同步,通讯录功能则方便了不同用户在软件上进行沟通。2、《腾讯会议》。这是腾讯旗下用来直播会议的app,提前设定的会议可以通知各成员进行准备,设置密码、筛选功能还可以保障会议的安全性,适合老师用来主持会议进行网上的教学记录。3、《中国大学MOOC》。这是专业的大学课程学习app,有着各个名校的讲师所记录的课程,相比与实时播放的网课,该软件采用录播的方式,为学生提供了更全面详细的视频教学,视频后还附有习题练习。4、《雨课堂》。这是一款将在线直播与ppt的播放融于一体的网课app,用户可以开放课程,方便学生加入课程并统计人数,直播过程中还可以学生还可以发弹幕进行沟通,取消了人人发言的功能以免情况混乱。5、《学而思网校》。相比于大学、初高中的数理化网课app,该软件更适合年轻用户用来了解人文、社科等多方面的一些知识,用来完善用户对于世界的了解、认知,丰富的版块方便用户直接选择专区学习。
网课软件排行榜前十名
网课软件排行榜前十名如下:1、学而思网校。学而思国际教育集团(以下简称学而思教育)成立于2003年,仅用七年时间已发展成为北京市乃至全国范围内知名度、美誉度颇高的中小学培训机构。2、新东方在线教育。北京新东方迅程网络科技有限公司(新东方教育在线)成于立2000年12月,系新东方教育科技集团下属公司。专门致力于提供以英语培训为主。黄冈网校品牌创立于2003年,是中国网络教育的领导品牌。黄冈中学网校无论是产品创新还是效劳创新都处于领域抢先地位,博得了消费者的良好口碑,并荣获多项好评称号。4、奥鹏远程教育中心。是2001年12月被批准立项试点,2005年4月正式运营的远程教育公共服务体系、远程教育内容服务运营机构。5、粉笔职教。粉笔职教成立于2015年,通过线上线下结合的学习方式,已发展成为公务员考试培训行业领先者。6、猿辅导。猿辅导在线教育,以科技创新驱动教育进步。公司旗下拥有猿辅导、斑马App、小猿口算、科学、猿编程等多款在线教育产品,为用户提供网课、智能练习、能力培养多元化智能教育服务。7、嗨学网。嗨学网主要学员群体是职业人士,课程力求满足学员提升职场竞争力的需要,帮助学员更高效获得行业权威证书、提升工作能力及建立行业人脉,从而积累职业生涯中最具价值的财富。8、作业帮。作业帮是致力于为全国中小学生提供全学科的学习辅导服务APP,是中小学在线教育领军品牌。作业帮自主研发多项学习工具,包括答疑、直播课、古文助手、作文搜索等。9、沪江网。沪江网旗提供的学习内容涵盖10多种语言、及亲子启蒙、中小学、职场技能、艺术等特色内容,产品覆盖PC端、平板端及手机端,为3岁到70岁全年龄阶段学习人群提供服务。10、万聪智学教育。万聪智学教育加盟品牌隶属于北京万聪智学教育科技有限公司,致力于为传统培训机构、公立学校提供“教育+互联网+人工智能”解决方案及为个人创业者提供整校输出的高新技术企业。
有哪些高质量的自学网站?
如今,疫情当前,很多的学生都无法在学校线下学习,只能在家里线上听讲,因此呢,我们便需要一些高质量的自学网站。1.中国大学MOOC中国大学MOOC是中国版的Coursera,里面基本上都是985、211的高校课程,涵盖的知识面非常广,包含文学艺术、哲学历史、经管法学、基础科学、工程技术、农林医药等,授课的都是国内知名高校的讲师,课程还设置了课堂讨论、毕业证书。在这里,每一个有意愿提升自己的人都可以足不出户就能免费获得更优质的高等教育。2.中国科普博览中国科普博览是一个综合性的科普网站,网站为宣传科学知识,提高全面科学文化素质,从全国各大科研机构收集了各具特色的科普信息,内容也是非常全面。除了让你能够上知天文,下知地理之外,还有生物、数学、物理、化学等多门学科知识普及。它将枯燥乏味的知识,融入了一定的趣味性,打造了一个既涨知识又好玩的科普平台。3.国图公开课国图公开课是国家图书馆推出的一个高质量免费学习的网站,主要以弘扬中国传统文化为核心,来提供多种多样的学习资源。网站内的所有视频教程都是免费的,你可以根据需求选择自己喜欢的课程,也可以利用网站的搜索功能找到你想要学习的课程,非常的方便。除了这些网站之外呢,还有一些APP也很适合大学生使用。1.番茄ToDo番茄ToDo是一款以番茄工作法为使用基础的时间管理软件。主要采用学霸模式锁屏和番茄钟来帮助用户提高工作效率。2.大学搜题酱大学搜题酱APP是一款专门供全国大学生使用的查题神器!致力于帮助大学生解决学习上的难题,涵盖了大学生学习所需的学习资料。3.网易公开课网易视频公开课频道推出国内外名校公开课,涉及广泛的学科,名校老师认真讲解深度剖析,网易视频公开课频道搭建起强有力的网络视频教学平台
网课哪个平台比较好?
高三网课推荐选择掌门1对1。优选清华、北大等名校背景老师,拥有长期教学经验和丰富的教学技巧,讲师好评率高。掌门1对1针对孩子做个性化智能测评,制定1对1专属辅导计划。一对一定制学习方案,掌门专业测评系统,全方位评测学生学习状况,分析诊断并制定针对性解决方案和系统的提升计划。而且掌门1对1自主研发家长专属客户端,家长随时自由旁听,通过APP进行实时监课,便于及时发现学生问题,和孩子一起见证教学效果。掌门1对1,中国中小学在线1对1教育第一品牌,专注为8—18岁孩子提供一对一专属定制化辅导。2014年,为满足更多学员及家长对高品质个性化定制教育的需求,掌门1对1全面转型提供线上教育服务。
网课平台哪个好?
慕课网、网易公开课、知到、CSDN、学堂在线。以上五个平台都是非常适合网课学习,课程资源丰富,操作简单。1、慕课网:慕课是爱课程网携手网易云课堂打造的在线学习平台,每一个有提升愿望的人,都可以在这里学习中国最好的大学课程,学完还能获得认证证书。有很多名校参与其中,所以课程的质量和丰富程度也都还不错。2、网易公开课:用户可以在线免费观看来自于哈佛大学等世界级名校的公开课课程,可汗学院,TED等教育性组织的精彩视频,内容涵盖人文、社会、艺术、科学、金融等领域。视频公开课在软件上基本都有,可以提前下载,随时随地学习。3、知到:“知到”是智慧树网上的子品牌,全球大型的学分课程运营服务平台,内容源自大学课堂,具有一定的专业质量,有效推动优质教育资源社会化共享。拥有海量大学高品质课程,可完美支持跨校授课、学分认证、名师名课名校、VIP级课程学习等效果。4、CSDN:CSDN 专注为IT专业人士及IT企业提供“集成化信息传播与服务平台”,CSDN拥有全球最大的中文IT技术社区。是很好的媒体平台,教育平台和人才平台。内容较多,学术性较强,博文多数免费。分类多且详细,非常全面。5、学堂在线:学堂在线主要包含清华大学和部分其他高校的课程,基本上都是清华大学的老师主讲,例如工程制图,主要结合SolidWorks的操作进行讲解,很多基础课和专业课都能在上面学习。不过目前还是有部分课程是收费的。
怎么有效地刷题?
刷题目的在于用最短的时间读懂题目和问题,并且理清思路,短时间接触大量的题型各种方法。这是我给刷题的定义。
具体操作方法可以这样:将答案放在一边,掐表开始读题圈数字单位和要点,第一直觉在心中给出解题思路把要用到的公式写出来,不用计算,掐表暂停;看答案,如果答案思路和自己的完全一致,那么直接跳到下一题,如果答案的思路和自己的不一样那么仔细对比是自己的方法错了,还是不够简便,答案的方法好在哪里,随后合上答案凭着记忆解一遍。
刷题和做题的主要区别:
1、刷题:
不计答案正确率,只计完成答题量。就是只要“量”不要“质”;
2、做题:
保证答完题的正确率的前提下,再进一步追求答题的数量。
国内有哪些好的刷题网站?
这个刷题网站对于求职者来说并不陌生,几乎是人人都要刷一遍的,面试官也会从里面挑选各类题目,这样就会有更多的人去在上面刷,不光光是为了想碰到原题,更能够学到其中的思想。部分题目还要收费的。很好的刷话题的网站有很多,不需要在家里刷,不知道问题耶和华的真正意图是什么,不管怎么说,作为一名程序员不能只看国内网站,列出在这里很好,每个人都对您的需求选择刷话题的网站。许多好评耶和华说了什么,我列出了我知道的。官方比赛网站是一个著名的美国在线的问题,专门为信息的竞争对手。可以直接读英语文本,准确、可靠,可以提高我的英语水平。解决这个问题的方法,模拟游戏与一个标准的测量机,文件输入和输出,直接提交评估模式程序源文件。网站培训主题是全面的,有必要知道学习生物信息学网站,每年有陈列,NOIP将引用上面的话题。每个问题有一个详细的答案,可以查看测试数据和结果,便于调试,发现错误和改正。使用渐进的层次结构,从简单到困难,教学知识、编程与实践相结合,问题必须完成,以避免唯一选择简单的行为。教练本章作为一个竞争,形成了一个独特的知识结构,掌握OI初学者,逐步。北京大学POJ开发团队,网站一直在进步。最早是微软的在线笔试网站,现在网易也使用它进行在线笔试。题目侧重于较难题目,风格很像ACM比赛,要自己注意数据集的输入输出。
怎样使用远程教育?
在教学中怎样使用现代远程教育\x0d\x0a 现代远程开放教育利用计算机网络和多媒体技术,在数字信号环境下进行教学活动诸方面的特点决定了其教育过程必然要体现学生自主学习、体现学生的参与、体现现代化手段的应用、体现多种媒体资源的利用。素质教育的目标是使学习者全体发展、全面发展、个性发展,强调学习的目的是实现学生对学习内容的意义建构,即实现意义学习。我国教育技术专家也提出了一种以教师为主导、以学生为主体的“双主”教学模式。这种教学模 式是“以教为中心”和“以学为中心”的揉合与优势互补,它基本保留“传递一接受”的教学过程,以接受学习作为主要学习方式,教师有时处于中心地位,但更多时候是在教师的指导下,学生进行自主学习。重视培养学习者的认知能力、创造能力,而能力只能在掌握必要知识的基础上,主要在实践中培养。因而教学中要增加实际练习、自由操作、社会实践等以学生亲身体验为主的学习内容,在课堂教学中必须运用具有交互性的教学和学习工具,把粉笔加黑板的教学变成以实践为基础的教学。实现这一目标,必须应用以计算机为核心的现代教育技术。\x0d\x0a 一. 在教学中以远程教育为手段。\x0d\x0a 社会的发展,时代的变迁,教育的改革,教学空间不再局限于黑板和讲台,借助于多媒体工具和平台,教学可以从视、听、触多个维度展开。不仅教师的授课、指导、辅助 要通过各类媒体进行,而且学生的学习和探索也要借助于各类媒体来实现。另外,各类计算机网络还构成了师生之间、学生之间互递信息的工具,教师的指导与学生的反馈都要在此基础上进行。远程教育是没有围墙的学校,其教学信息通过国家提供的卫星电视系统覆盖全国,利用计算机网络面向全国实施网上教学。同时,现代远程开往教育教学系统,可以在不同层面上分工协作,为教师和学生提供必要的学习资源和学习支持服务。\x0d\x0a 二. 现代远程教育是现代教学中不可缺少的可用资源。\x0d\x0a 当今教育的改革,学习培养学生是注重能力全方面的发展,不是片面的发展。素质教育重视知识与能力,不再片面强调对知识的记忆,因此,在这种基于“学”的环境系统中,必然要选择与应用大量的教与学的资源。现代教育技术能够提供多样化的学习资源,如磁带音像教材、素质教育重视知识与能力,不再片面强调对知识的记忆,因此,在这种基于“学”的环境系统中,必然要选择与应用大量的教与学的资源现代远程开放教育利用计算机网络和多媒体技术,在数字信号环境下进行教学活动诸方面的特点决定了其教育过程必然要体现学生自主学习、体现学生的参与、体现现代化手段的应用、体现多种媒体资源的利用。\x0d\x0a 三.现代教育离不开远程教育技术。 \x0d\x0a 现代教育技术可以构造各种教学环境,如多媒体综合教室、多媒体计算机网络教室、电子阅览室、校园网。在课堂教学中,应用多媒体技术、网络技术和虚拟 现实技术能够创造和展示各种趋于现实的学习情境,把抽象的学习与现实生活融合起来,激发学生的思维与探索。这不仅是一种教育形式的改革,更是一种教育哲学思想,它充分利用社会教育资源、现代教育技术及灵活的学习支持服务,为一切有学习愿望的人提供不受时空限制的学习条件和全方位良好的学习环境。教育以教育技术和媒体手段为课程载体,使教与学的过程可以异步或同步进行,由于学习者不同的家庭经济环境对自主学习的推动力和影响力不一样。家庭经济较好可以有更多的物质条件来接受和消费教育,能力的提高会反过来促进生活环境的改善,这有利于自主学习的持续提升。\x0d\x0a 四.新时代的教和学是通过远程教育来实现的。\x0d\x0a 在教学中要合作探究,合作学习是通过两个或两个以上的主体在一起互促学习以提高学习成效的教学形式。合作学习能够发展学生的自信心,尤其可以使学业上失败的 学生在同伴帮助的过程中经历成功的体验,重塑自尊;合作学习可以提高学生的学习积极性和主动 性,发展学生的主体意识,合作学习消除了在应试 教育中竞争造成的人与人之间的冷漠与孤立,形成 和谐平等的师生关系、生关系。可见,合作学习是 以“学”为中心的教学模式的必然要求。应用现代教育技术提供的各种网络环境可以有效地开展合作学习。 \x0d\x0a 以上只是简单地分析了现代教育技术在创建 新型教学模式中的地位与作用。如何才能在应用现代教育技术的基础上,建立有效的教学模式,还应由各地区、各学校根据自身的条件去创造性地探索与开发。 \x0d\x0a 总之,通过有效的教学设计,我们可以使现代教育技术的优势得以充分发挥,建立行之有效的教学模式,推进素质教育的实现。使现代远程更好的为教学服务。
什么是远程教育
远程教育,也称现代远程教育为网络教育,是成人教育学历中的一种。是指使用电视及互联网等传播媒体的教学模式,它突破了时空的界线,有别于传统的在校住宿的教学模式。远程教育是什么:远程教育(Distance education)是指使用电视或互联网等传播媒体进行授课的教学模式,是现代信息技术应用于教育后产生的新概念,可以突破时间和空间的限制、提供更多学习机会、降低教学成本。远程教育是学生与教师、学生与教育组织之间主要采取多种媒体方式进行系统教学和通信联系的教育形式,是将课程传送给校园外的一处或多处学生的教育。现代远程教育则是指通过音频、视频(直播或录像)以及包括实时和非实时在内的计算机技术把课程传送到校园外的教育。现代远程教育是随着现代信息技术的发展而产生的一种新型教育方式。计算机技术、多媒体技术、通信技术的发展,特别是因特网(internet)的迅猛发展,使远程教育的手段有了质的飞跃,成为高新技术条件下的远程教育。学士学位证是为了证明学生的专业知识和技术的水平而授予的证书,由国家国家教育委员会学位办公室会同国务院学位委员会统一印制,由学位授予单位颁发相应的学士学位证书。本科毕业后,考研究生需要学士学位证,因为只有获得本科学士学位证的基础上,才可以其实硕士学位证;出国留学需要学士学位证。很多公司在面试本科生时,还需要本科学历的求职者出示学士学位证,拥有学位学位证可以帮助自身找到更好的工作岗位。在企业中评定职称时,拥有学士学位证书会使自身更有竞争优势。部分事业单位进编制时也需要学士学位证书。部分考研院校需要考生出示学士学位证书才有资格报考。
TCP 详解
title: TCP 总结 date: 2018-03-25 09:40:24 tags: categories: -计算机网络 ??我们都知道 TCP 是位于传输层的协议,他还有一个兄弟就是 UDP ,他们两共同构成了传输层。显然他们之间有很大的区别要不然的话在传输层只需要一个就好了。 ??其中最重要的区别就是一个面向连接另外一个不是,这个区别就导致了他们是否能够保证稳定传输,显然不面向连接的 UDP 是没办法保证可靠传输的,他只能靠底层的网络层和链路层来保证。我们都知道网络层采用的是不可靠的 IP 协议。好吧,网络层也保证不了可靠传输,所以 UDP 保证可靠传输只能依靠链路层了。 ??而 TCP 就好说了他不仅仅有底层的链路层的支持,还有自己的面向链接服务来保证可靠传输。当然 TCP也不仅仅就是比 UDP 多了一个可靠传输,前面也说到了这只是他们之间一个重要的区别。其实他的三个重要特性就是它们之间的区别。 ??* 可靠传输 ??* 流量控制 ??* 拥塞控制 TCP 主要是 确认重传机制 数据校验 数据合理分片和排序 流量控制 拥塞控制 依靠来完成可靠传输的 , 下面详细介绍这几种保证可靠传输的方式。 确认重传,简单来说就是接收方收到报文以后给发送方一个 ACK 回复,说明自己已经收到了发送方发过来的数据。如果发送方等待了一个特定的时间还没有收到接收方的 ACK 他就认为数据包丢了,接收方没有收到就会重发这个数据包。 好的,上面的机制还是比较好理解的,但是我们会发现一个问题,那就是如果接收方已经收到了数据然后返回的 ACK 丢失,发送方就会误判导致重发。而此时接收方就会收到冗余的数据,但是接收方怎么能判定这个数据是冗余的还是新的数据呢? 这就涉及到了 TCP 的另外一个机制就是采用序号和确认号,也就是每次发送数据的时候这个报文段里面包括了当前报文段的序号和对上面的报文的确认号,这样我们的接收方可以根据自己接受缓存中已经有的数据来确定是否接受到了重复的报文段。这时候如果出现上面所说的 ACK 丢失,导致接受重复的报文段时客户端丢弃这个冗余的报文段。 好现在我们大致了解了确认重传机制,但是还有些东西还没有弄清楚,也就是 TCP 真正的实现究竟是怎样的。 这就是我们要解决的第一个问题就是如何确认。这里涉及到两种确认方式,分别称为 累计确认(捎带确认) 和 单停等协议 。 用一张图来快速理解,就是每发送一次数据,就进行一次确认。等发送方收到了 ACK 才能进行下一次的发送。 一样的也是采用的 ACK 机制,但是注意一点的是,并非对于每一个报文段都进行确认,而仅仅对最后一个报文段确认,捎带的确认了上图中的 203 号及以前的报文。 总结:从上面可以看到累计确认的效率更加高,首先他的确认包少一些那么也就是在网络中出现的大部分是需要传输的数据,而不是一半的数据一半的 ACK ,然后我们在第二张图中可以看到我们是可以连续发送多个报文段的(究竟一次性能发多少这个取决于发送窗口,而发送窗口又是由接受窗口和拥塞窗口一起来决定的。),一次性发多个数据会提高网络的吞吐量以及效率这个可以证明,比较简单这里不再赘述! 结论:显然怎么看都是后者比较有优势,TCP 的实现者自然也是采用的累计确认的方式! 上文中的那个特定的时间就是超时时间,为什么有这个值呢? 其实在发送端发送的时候就为数据启动了一个定时器,这个定时器的初始值就是超时时间。 超时时间的计算其实有点麻烦,主要是我们很难确定一个确定的值,太长则进行了无意义的等待,太短就会导致冗余的包。TCP 的设计者们设计了一个计算超时时间的公式,这个公式概念比较多,有一点点麻烦,不过没关系我们一点点的来。 首先我们自己思考如何设计一个超时时间的计算公式,超时时间一般肯定是和数据的传输时间有关系的,他必然要大于数据的往返时间(数据在发送端接收端往返一趟所用的时间)。好,那么我们就从往返时间下手,可是又有一个问题就是往返时间并不是固定的我们有如何确定这个值呢?自然我们会想到我们可以取一小段时间的往返时间的平均值来代表这一时间点的往返时间,也就是微积分的思想! 好了我们找到了往返时间(RTT),接下来的超时时间应该就是往返时间再加上一个数就能得到超时时间了。这个数也应该是动态的,我们就选定为往返时间的波动差值,也就是相邻两个往返时间的差。 下面给出我们所预估的超时时间(TimeOut)公式: 很好,看到这里其实你已经差不多理解了超时时间的计算方式了,只不过我们这个公式不够完善,但是思路是对的。我们这时候来看看 TCP 的实现者们采用的方式。 好的,这就是 TCP 实现的超时时间的方式,但是在实际的应用中并不是一直采用的这种方式。假如说我们现在网络状态非常的差,一直在丢包我们根本没必要这样计算,而是采用直接把原来的超时时间加倍作为新的超时时间。 总结:好的现在我们知道了在两种情况下的超时时间的计算方式,正常的情况下我们采用的上面的比较复杂的计算公式,也就是 RTT+波动值 否则直接加倍 上面我们看到在发送方等待一个超时重传时间后会开始重传,但是我们计算的超时重传时间也不定就很准,也就是说我们经常干的一件事就会是等待,而且一般等的时间还挺长。那么可不可以优化一下呢? 当然,在 TCP 实现中是做了优化的,也就是这里说到的快速重传机制。他的原理就是在发送方收到三个冗余的 ACK 的时候,就开始重传那个报文段。那么为什么是三个冗余的 ACK 呢?注意三个冗余的 ACK 其实是四个 ACK 。我们先了解一下发送 ACK 策略,这个是 RFC 5681 文档 规定的。 好的,那么现在我们可以看到如果出现了三个冗余的 ACK 他只可能是发生了两次情况三,也就是发送了两个比期望值大的数据。但是注意出现情况三有两种可能,一个是丢包,另外一个是乱序到达。 比如说我们现在是数据乱序到达的,我们来看一下。 第一种乱序情况 另外一种乱序 丢包情况 结论: 很显然我们可以看到,如果发生了乱序有可能会出现三次冗余 ACK,但是如果发现了丢包必然会有三次冗余 ACK 发生,只是 ACK 数量可能更多但是不会比三次少 在我们发现丢包以后我们需要重传,但是我们重传的方式也有两种方式可以选择分别是 GBN 和 SR 翻译过来就是 拉回重传 和 选择重传 。好其实我们已经能从名字上面看出来他们的作用方式了,拉回重传就是哪个地方没收到那么就从那个地方及以后的数据都重新传输,这个实现起来确实很简单,就是把发送窗口和接受窗口移回去,但是同样的我们发现这个方式不实用干了很多重复的事,效率低。 那么选择重传就是你想到的谁丢了,就传谁。不存在做无用功的情况。 结论: TCP 实际上使用的是两者的结合,称为选择确认,也就是允许 TCP 接收方有选择的确认失序的报文段,而不是累计确认最后一个正确接受的有序报文段。也就是跳过重传那些已经正确接受的乱序报文段。 ??数据校验,其实这个比较简单就是头部的一个校验,然后进行数据校验的时候计算一遍 checkSum 比对一下。 ??在 UDP 中,UDP 是直接把应用层的数据往对方的端口上 “扔” ,他基本没有任何的处理。所以说他发给网络层的数据如果大于1500字节,也就是大于MTU。这个时候发送方 IP 层就需要分片。把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组。这样就会多做许多事情,而更严重的是 ,由于UDP的特性,当某一片数据传送中丢失时 , 接收方便无法重组数据报,将导致丢弃整个UDP数据报。 ??而在 TCP 中会按MTU合理分片,也就是在 TCP 中有一个概念叫做最大报文段长度(MSS)它规定了 TCP 的报文段的最大长度,注意这个不包括 TCP 的头,也就是他的典型值就是 1460 个字节(TCP 和 IP 的头各占用了 20 字节)。并且由于 TCP 是有序号和确认号的,接收方会缓存未按序到达的数据,根据序号重新排序报文段后再交给应用层。 ??流量控制一般指的就是在接收方接受报文段的时候,应用层的上层程序可能在忙于做一些其他的事情,没有时间处理缓存中的数据,如果发送方在发送的时候不控制它的速度很有可能导致接受缓存溢出,导致数据丢失。 ??相对的还有一种情况是由于两台主机之间的网络比较拥塞,如果发送方还是以一个比较快的速度发送的话就可能导致大量的丢包,这个时候也需要发送方降低发送的速度。 ??虽然看起来上面的两种情况都是由于可能导致数据丢失而让发送主机降低发送速度,但是一定要把这两种情况分开,因为前者是属于 流量控制 而后者是 拥塞控制 ,那将是我们后面需要讨论的事情。不要把这两个概念混了。 ??其实说到流量控制我们就不得不提一下滑动窗口协议,这个是流量控制的基础。由于 TCP 连接是一个全双工的也就是在发送的时候也是可以接受的,所以在发送端和接收端同时维持了发送窗口和接收窗口。这里为了方便讨论我们就按照单方向来讨论。 ??接收方维持一个接受窗口,发送方一个发送窗口。发送的时候要知道接受窗口还有多少空间,也就是发送的数据量不能超过接受窗口的大小,否则就溢出了。而当我们收到一个接收方的 ACK 的时候我们就可以移动接受窗口把那些已经确认的数据滑动到窗口之外,发送窗口同理把确认的移出去。这样一直维持两个窗口大小,当接收方不能在接受数据的时候就把自己的窗口大小调整为 0 发送窗口就不会发送数据了。但是有一个问题,这个时候当接收窗口再调大的时候他不会主动通知发送方,这里采用的是发送方主动询问。 ??还是画个图看的比较直观: ??拥塞控制一般都是由于网络中的主机发送的数据太多导致的拥塞,一般拥塞的都是一些负载比较高的路由,这时候为了获得更好的数据传输稳定性,我们必须采用拥塞控制,当然也为了减轻路由的负载防止崩溃。 ??这里主要介绍两个拥塞控制的方法,一个是慢开始,另外一个称为快恢复。 那么问题来了,为什么需要序号呢?为什么又是三次握手而不是两次?以及什么是 SYN 洪泛攻击? 这里需要说明一下的是最后的那个长长的 TIME_WAIT 状态一般是为了客户端能够发出 ACK 一般他的值是 1分钟 或者2分钟 ??好了,今天真的写了不少,主要就是把 TCP 的可靠传输以及连接管理讲清楚了,以及里面的一下细节问题,真的很花时间。然后其他没有涉及到的就是关于 TCP 的头并没有详细的去分析,这个东西其实也不是很难,但是现在篇幅真的已经很大就先这样,头里面的都是固定的不需要太多的理解。
TCP是什么?简单易懂的告诉我!
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC 793说明。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。
英文原义:Transmission Control Protocol
中文释义:(RFC-793)传输控制协议
注解:该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。