Typora真好用
计算机网络
本次笔记只针对TCP/IP协议。
网络协议分层
网络协议是信息在计算机网络传输时,为了防止发出错误,人们规定的一些规则。(例如:以什么格式传输信息,接收者是否发送应答信息)一般来说,现在存在三种分层:
(1)OSI七层协议(不实用,已经废弃)。
(2)TCP/IP四层协议(得到广泛应用)。
(3)五层协议(理论中用来说明,更好理解,实践上还是采用TCP/IP)。
关系如下:
应用层
应用层协议定义的是应用进程之间的交互、通信规则。对于不同的网络进程需要不同的应用层协议。(例如:域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等)
运输层
运输层负责向两台主机进程之间提供通用的数据传输服务。主要有以下两种协议,每一个应用层协议一般都会使用到两协议之一。
UDP(用户数据协议):面向无连接的,不保证数据传输的可靠性的数据传输服务。
TCP(传输控制协议):面向有连接的,可靠的数据传输服务。
具体区别见下表:
网络层
在发送数据时,网络层将运输层的数据封装成分组和包,选择合适的网间路由和交换结点,确保信息及时传输。(分组也叫IP数据报)
数据链路层
在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
通信流程如下:
物理层
在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
TCP/IP协议族
如图下所示:
TCP报文传输
TCP报文的结构
(1)序列号(seq):用来标识源端向目的端发送的字节流。
(2)确认序号(ack):ack=seq+1,只有标志位ACK=1才有效。
(3)标志位:
ACK:确认序号有效位。
FIN:释放连接。
PSH:接收方应尽快提交到应用层。
RST:重置连接。
SYN:发起新连接。
URG:紧急指针有效。
三次握手四次挥手机制
三次握手
确认通信双方具有收发数据能力。
(1)客户端向服务端发起连接请求。先生成一个序列号x,发送报文段SYN=1,seq=x。(说明客户端主机有发送数据能力)
(2)服务端接收到连接请求后,回复请求。先保存收到的信息,再生成序列号y,发送报文段SYN=1,ACK=1,seq=y,ack=x+1。(说明服务端主机既有接收数据能力,又有发送数据能力)
(3)客户端接收回复后,回复服务端发来的回复。先保存收到的信息(SYN=1说明同意连接,ack=x+1说明接收到自己的请求),再发送报文段ACK=1,ack=y+1,seq=x+1。(说明客户端主机有接收数据能力)
注意:当服务端接收到客户端回复的信息,连接即建立。建立连接后,发送数据的序列号从x+1开始,因为不携带数据报文不占据序列号。
如下图所示:
四次挥手
确认关闭一个连接。
(1)客户端数据传输完成,发送连接释放报文。报文段FIN=1,seq=(初始序列号+传输数据+1)。此时客户端不再发送数据,但可以接收数据。
(2)服务端接收请求,回复确认报文。报文段ACK=1,ack=(初始序列号+传输数据+2),seq=(服务端初始序列号+服务端传输数据)。此时,服务端处于等待关闭状态,等待服务端将数据发送完。
(3)服务端发完数据后,发送连接释放报文。报文段FIN=1,ACK=1,ack=(初始序列号+传输数据+2),seq=(服务端初始序列号+服务端传输数据)。
(4)客户端接收连接释放报文,发送确认报文。报文段ACK=1,ack=(服务端初始序列号+服务端传输数据+1),seq=(初始序列号+传输数据+2)。服务器接收报文后关闭连接,而客户端要经过2MSL(最长报文段寿命的2倍时长)后才释放TCP连接。
如何保证TCP正确传输
传输流程
1.应用数据被分割成 TCP 认为最适合发送的数据块。
2.TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
3.校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
4.TCP 的接收端会丢弃重复的数据。
5.流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)
6.拥塞控制: 当网络拥塞时,减少数据的发送。
7.ARQ协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
8.超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
ARQ协议
ARQ协议时自动重传协议,通过确认与超时两个机制,保证可靠的消息传输。ARQ协议包括停止等待ARQ协议,连续ARQ协议。
停止等待ARQ协议:每次发送完一个分组,就停止发送直到对方确认(回复ACK)。若规定时间未收到,则重新发送。
注意:这种方式简单但效率低下。
连续ARQ协议:发送方开一个发送窗口,所有在窗口的分组可以连续发送。接收方一般采用累计确认方式,对最后一个分组确认。
注意:效率较高,但出错的组及后面的组需要重传。
滑动窗口机制:TCP利用滑动窗口机制控制流量。接收方回复的确认报文包含窗口字段,可控制窗口大小,进而影响传输速率。
拥塞控制机制:由于网络是大家共用的,若出现某时间段对网络某一资源的需求超过了网络的承受范围,需要进行拥塞控制。发送方需要发送一个拥塞窗口(cwnd)的状态变量。其大小取决于当前网络拥塞程度。TCP拥塞机制有以下四种算法:
(1)慢开始。拥塞窗口由小变大(逐次翻倍),防止出现瞬间大量数据字节传入网络,导致网络拥塞的情况。若拥塞窗口值已经等于慢开始门限值,转为拥塞避免算法。
(2)拥塞避免。拥塞窗口由小变大(逐次加1),若出现超时重传情况(说明发生网络拥塞),拥塞窗口变为1,慢开始门限减半,重新开始慢开始算法。
(3)快速重传。发送方可以连续发送报文段,不必每次等待确认,接收方若收到失序报文段,立即回复重复确认。只要发送方连续收到三个重复确认ACK,立即重传未收到的报文段。
(4)快速恢复。收到三个重复确认后,将当前拥塞窗口与慢开始门限减半,开始拥塞避免算法。
HTTP协议(浏览网页这一块)
浏览网页过程:
(1)DNS解析(根据填写的域名地址访问DNS服务器,得到相应的ip地址)
(2)TCP连接(根据ip地址进行TCP连接)
(3)发送HTTP请求。
(4)服务器处理请求并返回HTTP报文。
(5)浏览器解析报文并渲染页面。
(6)释放连接。
浏览网页涉及到的协议:
浏览网页时协议之间关系:
长连接与短连接
短连接:HTTP/1.0默认采用短连接,客户端每次需要获取一次web资源,就与服务器建立一次连接,任务结束就中断。
长连接:HTTP/1.1默认采用长连接,只要打开一个网页,就会与改服务器建立长连接,其他的web请求均使用此路径。可以设置浏览器来设置长连接的时间。需要客户端与服务器都支持长连接。
HTTP状态码
Cookie与Session
HTTP是一种无状态协议,不保存用户与服务器的通信状态。为了保存用户信息,利用Cookie与Session机制。
Cookie:Cookie是保存在客户端(浏览器端)。是客户端(浏览器端)保存用户信息的地方。例如用户登录信息会保存在Cookie中的Token中,下次之间通过Token值查找用户。
Session:Session是保存在服务器端的。是服务器端保存用户信息的地方。例如购物车保存在Session中。
联系与区别:一般来说,两者都是一起使用的,因为Cookie中存在Session id,一般较为私密的信息放在Session中安全性较好。
HTTP/1.0与HTTP/1.1区别
参考博客:https://www.cnblogs.com/wuwuyong/p/12198928.html
032)]
参考博客:https://www.cnblogs.com/wuwuyong/p/12198928.html
参考博客:https://blog.csdn.net/ThinkWon/article/details/104903925