Internet History, Technology, and Security(week6)——Technology: Transport Control Protocol(TCP)
前言:
这周开始学习分层网络模型的第三层,传输层。
Transport/Reliability:
Transport Layer
TCP层的目的是补偿IP层中可能出现的错误,并充分利用可用资源。由于IP层是有可能丢失数据的,因此TCP层会保存一份数据拷贝,不断的重发数据包直到收到确认应答,如果耗时太长(hop数过多),也将重新发送。
TCP的原理大致是这样的:数据在传输数据时会分成很多个packets(包),分开发送。我们不断地重复发送过程直到从目的端收到acknowledgement(确认回复),如果途中有出现数据丢失的情况,那么会一直重复发送直到收到目的端的确认为止。
因此TCP的工作其实就是确保所有的packet(包)都能被目的端接收。
IP不被要求能够进行Storage(存储),就像路由器不会进行任何存储,只是尽快的来回传输。但我们也需要有Memory(内存)来存储这些数据包,以便我们重传,所以电脑或手机通过网络发送数据时,它就承担起存储副本的功能,而不是网络本身来存储。
在20世纪80年代后期,有人预测因特网将会消亡,确实随着NSFNet的出现,接入的计算机数目增加导致网速越来越慢,网络很难继续支撑。全靠Van Jacobson,他提出了Slow Start(慢启动)算法,解决了网络拥堵问题并拯救了互联网。
接下来是关于他的一段采访。
Van Jacobson - Slow Start Algorithm
cwnd(Congestion Window,拥塞窗口)是一个状态变量,它表示无需等待确认应答就可以继续发送数据包的最大数量,其大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。
慢开始算法的思路就是,避免一开始就发送大量的数据,换成先试探网络的拥塞程度,再由小到大逐渐增加拥塞窗口的大小。
The Domain Name System
DNS(Domain Name System,域名系统)是万维网上作为域名与IP地址相互映射的一个分布式数据库,能够使用户只需记住更加友好且有意义的字符串域名,域名通过解析再得到IP地址。毕竟数字IP对人类来说不怎么友好,显然,记住一串有意义的英文或者英文缩写的组合比记一串数字更加容易也更加直观。
TCP Wrap Up
总而言之,TCP主要就是弥补IP层所做的工作的不完美之处。例如:数据到达时,可以不再是无序的;TCP使得数据在发送端储存了拷贝,如果没有收到ACK就会重复发送,确保数据不会丢失。
小结:
Internet History, Technology, and Security(week6)——Technology: Transport Control Protocol(TCP)的更多相关文章
- Internet History, Technology, and Security(week7)——Technology: Application Protocols
Layer 4: Applications Application Layer TCP提供了“a reliable pipe”(一个坚固的水管)连接用户和服务器,确保了数据能准确不出意外地传输,所以A ...
- Internet History, Technology, and Security(week5)——Technology: Internets and Packets
前言: 之前都在学习Internet的历史,从这周开始,进入到了Internet技术的学习. Layer1: Link Introduction / The Link Layer 80年代之前,主流网 ...
- Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)
Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...
- Internet History, Technology, and Security(week1)——History: Dawn of Electronic Computing
前言: 第一次进行课程学习,在反复观看视频和查找字典翻译理解后选出了视频中个人认为较重要的概念,以下并不按照逐句翻译,中文概括大意余下自由发挥,对老师想要告诉我们的历史有一个初步的了解,顺便锻炼以下英 ...
- Internet History, Technology, and Security(week2)——History: The First Internet - NSFNet
前言: 上周学习了<电子计算机的曙光>,对战时及战后的计算机的历史发展有了更丰富的了解,今天继续coursera的课程,感觉已经有点适应了课程的节奏(除了经常有些奇奇怪怪的词汇看都看不懂@ ...
- Internet History, Technology, and Security(week8)——Security: Encrypting and Signing
Hiding Date from Ohters Security Introduction Alice and Bob是密码学.博弈论.物理学等领域中的通用角色之一.Alice(代表A)和Bob(代表 ...
- Internet History, Technology, and Security(week9)——Web Security
Secure Web Connections: Security Public/Private Key - Secure Sockets 凯撒密码容易被破解,后来人们发明了公钥和私钥,由于私钥一定是要 ...
- Internet History, Technology, and Security(week4)——History: Commercialization and Growth
Explosive Growth of the Internet and Web: The Year of the Web 1994年后,由NCSA的老员工们构成的Netscape(网景)的成立.Ne ...
- Internet History, Technology, and Security(week3)——History: The Web Makes it Easy to Use
前言: 上周学习了第一个网络NSFnet,美国国家科学基金会(National Science Foundation,简称NSF)在全美国建立了6个超级计算机中心所互联的一个网络,这周继续学习网络的发 ...
随机推荐
- ssh远程连接linux服务器并执行命令
详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...
- Vue-3D-Model:用简单的方式来展示三维模型
为什么做这个组件 我经常听到前端朋友们抱怨,在网页上展示三维模型太麻烦了.但是这方面的需求又有很多,例如做房地产的需要展示户型.卖汽车的需要展示汽车模型等. 在网页上展示三维模型就只能用WebGL技术 ...
- 【Linux开发】【Qt开发】ARM QT移植详细步骤教程
ARM QT移植详细步骤教程 米尔SAM9X5和A5D3X上默认的Qt版本是4.5.3,当这个版本的Qt库不能满足实际开发需求时,可通过此方法制定Qt开发.运行环境. 移植的步骤如下: 1.下载新版q ...
- Python web 面试题(一)
1.列举django的内置组件? url .view.model.template.中间件 2.列举django中间件的5个方法?以及django中间件的应用场景? process_request(s ...
- Java中HashMap扩容机制思考
1. HashMap在什么条件下扩容 判断HashMap的数组Size大小如果超过loadFactor*capacity,就要扩容. 相关的类属性: capacity:当前数组容量,始终保持 2^n, ...
- CentOS7搭建NTP服务器及客户端同步时间
一.服务器配置 1.查看服务器.客户端操作系统版本 [root@hadoop101 ~]# cat /etc/redhat-release CentOS Linux release (Core) 2. ...
- Java——ArrayList底层源码分析
1.简介 ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔, 当数组大小不满足时需要增加存储能力,就要将已经有数 ...
- mysql 大数据分页优化
一.mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from prod ...
- Django 调试models 输出的SQL语句 定位查看结果
django 调试models变得更为简单了,不用像之前的版本, 手工去调用django query, 才能打印出之前的代码是执行的什么SQL语句. 1.3开始只需在settings.py里,配置如下 ...
- CentOS7.6中 KVM虚拟机内存、CPU调整
CentOS7.6中 KVM虚拟机内存.CPU调整 一.调小虚拟机内存 调小虚拟机内存可以动态实现,不用关机 1.查看当前内存大小 [root@heyong kvm]# virsh dominfo t ...