本文共 4731 字,大约阅读时间需要 15 分钟。
都属于TCP/IP运输层,是互联网的正式标准。用户数据报协议UDP和传输控制协议TCP。在协议栈中位于应用层和网络层(IP)之间
UDP用户数据报协议,再在IP的数据报服务上增加了一点很少的功能,就是复用和分用的功能以及差错检测功能。其主要特点有:流量控制
滑动窗口用于加速传输,比如发了一个seq=100的包,理应收到这个包的确认ack=101后再继续发下一个包,但有了滑动窗口,只要新包的seq与没有得到确认的最小seq之差小于滑动窗口大小,就可以继续发。 1.流量控制——滑动窗口 TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。 为什么要设置窗口? 我们可以把窗口理解为缓冲区(但是有些窗口和缓冲区又不太一样)。 如果没有这些“窗口”,那么TCP没发送一段数据后都必须等到接收端确认后才能发送下一段数据,这样做的话TCP传输的效率实在是太低了。 解决的办法就是在发送端等待确认的时候继续发送数据,假设发送到第X个数据段是收到接收端的确认信息,如果X在可接受的范围内那么这样做也是可接受的。这就是窗口(缓冲区)引入的缘由。 1.1 窗口 (1)接收端窗口 rwnd 接收端缓冲区大小。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。 (2) 拥塞窗口 cwnd (congestion window) 发送端缓冲区大小 (3)发送窗口swnd 发送窗口的上限值 = Min [rwnd, cwnd] 当 rwnd < cwnd 时,是接收端的接收能力限制发送窗口的最大值。 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。 1.2 滑动窗口 发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。还可发送 300 字节。IP地址的合法性:
TCP报文的首部格式中确认号的计算;确认号是期望收到对方下一个报文段的第一个数据字节的序号。 序列号等于前一个报文段的序列号与前一个报文段中数据字节的数量之和。例如,假设源主机发送3个报文段,每个报文段有100字节数据,且第一个报文段的序列号是1000,那么接收到第一个报文段后,目的主机返回含确认号1100的报头。接收到第二个报文段(其序号为1100)后,目的主机返回确认号1200,接收到第三个报文段后,目的主机返回确认号1300。三次握手经历的状态
客户端: close(连接前的关闭状态)->SYN-SENT(同步已发送,第一次握手后进入)-> ESTAB-LISHED(已建立连接,发出第三次握手后进入) 服务器: close(连接前的关闭状态)->listen(监听状态,被动打开后进入)->SYN-RCVD(同步收到状态,发出第二次握手后进入)->ESTAB-LISHED(已建立连接,收到第三次握手后进入) TCP四次挥手双方经历的状态 客户端:ESTABLISHED(建立状态)->FIN-WAIT-1(终止等待1,发出第一次挥手后进入)->FIN-WAIT-2(终止等待2,接收到第二次挥手后进入)->TIME-WAIT(接收第三次挥手后进入)->CLOSED(过了TIME-WAIT时间未收到重发消息后进入) 服务器端:ESTABLISHED->CLOSED-WAIT(接收到第一次挥手后进入)->LAST-ACK(发出第三次挥手后进入)->CLOSED(接收到第四次挥手后进入) 注意:四次挥手发送的信号量上,FIN始终为1,ack为上一次收到挥手信息的seq加1(比如收到seq=u的消息,我发送时的ack就为u+1,同时要附带一个ACK+1) 三次握手的信号量SYN也始终为1,ACK始终为1,ack为接收到的seq加一(seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号)127.0.0.1是本机回环测试地址,等价于localhost,可以访问本地站点
IP地址分网络号加主机号
ABC类IP地址分类,主要看第一位上的数 A类IP,因为最高位必须是0,所以其地址范围是1.0.0.1到126.0.0.0,第一字节是网络号 B类IP,因为最高位必须是10,所以其地址范围是128.0.0.0到191.255.255.255,第二字节是网络号 C类IP,因为最高位必须是110,所以其地址范围是192.0.0.0到223.255.255.255,第三字节是网络号 D类IP,因为最高位必须是1110,所以其地址范围是224.0.0.0到239.255.255.255,未划分网络号和主机号。URI统一资源定位符,URI用字符串标识网上的某一资源,而URL是资源的地址
URL叫做统一资源定位符(就是网址),例如http://mail.163.com/index.html:统一资源定位符,全球性地址,用于定位网上的资源。 其中http://这个是协议,HTTP超文本传输协议,也就是网页在网上传输的协议 mail这个是服务器名,代表一个邮箱服务器 163.com这个是域名,用来定位网站的独一无二的名字 mail.163.com:这个是网站名,由服务器名+域名组成 /:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录 index.html:这个是根目录下的默认网页. DNS根服务器 DNS翻译域名是基于UDP协议(因为TCP协议的开销过大,一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。),所以受UDP包大小的限制 为了增加反应速度,网页访问的申请都是由一个数据包所完成的,而一个数据包的长度为256B字节,这就决定了一个数据包只能有13个块,这就从根本上限制了根域名服务器的数量,也就是说根域名服务器只能有13个。好吧,我们结合DNS、TCP和HTTP来详细地说一下输入url到页面返回的全过程吧。
DNS万维网上一个存储域名和IP互相映射的一个分布式数据库。 找IP顺序,先看浏览器缓存,系统缓存,路由器缓存,都没有则向服务器查询,从上到下分别是根服务器(全球13台),顶级域名服务器,权限服务器,本地域名服务器转载地址:http://avphn.baihongyu.com/