计算机网络

五层模型
物理层、数据链路层、网络层、运输层、应用层。
物理层:点对点的比特流传输
数据链路层:两台主机之间的数据传输,将网络层交付下来的IP数据报封装成帧。在两个相邻的链路上传输帧。(数据和控制信息)
网络层:计算机网络中的通信,两台主机的数据交换会经过多个链路,网络层的任务是选择合适的链路。网络层使用IP协议,路由器,ARP。
运输层:为两台主机的进程间的通信提供服务,TCP/UDP
应用层:通过应用进程间的交互完成特定的网络应用。 HTTP/STMP/DNS

TCP三次握手和四次挥手:
1.客户端向服务端发送SYN标志的数据包 第一次握手-服务端
2.服务端确认收到,发送SYN/ACK标志的数据包 第二次握手-客户端
3.客户端收到发送ACK标志的数据包第三次握手-服务端
三次握手的目的是建立可靠的通信信道
第一次客户端不能确认,服务端确认了对方发送正常,自己接收正常
第二次客户端确认了对方发送、接收正常自己接收正常,服务端还是第一次的状态
第三次客户端确认了对方、自己发送、接收正常、服务端确认了自己发送、接收、对方发送接收正常。

为什么要传回 SYN
接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。

传了 SYN,为啥还要传 ACK
双方通信无误必须是两者互相发送信息都无误。传了 SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要 ACK 信号来进行验证。

第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。

第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。

第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

为什么要四次挥手
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。

TCP如何保证可靠传输
1.TCP吧数据包分成合适的数据块
2.对每个数据包进行编号,按序发送
3.检验和TCP会保持它首部和数据的检验和
4.会丢弃重复数据
5.流量控制防止包丢失
6.拥塞控制
7.ARQ协议用于实现可靠传输,每次发送完数据等待接收后再继续发送
8.超时重传(停止等待ARQ协议)

输入url到显示主页的过程及使用了哪些协议
1.浏览器输入域名
2.服务器与客户机建立TCP连接 TCP协议
会通过DNS获取主机的IP首先查找浏览器缓存,再查找路由器缓存,再查找DNS缓存 ARP协议
3.找到主机后,浏览器向Web服务器发送Http报文 HTTP 、IP协议
4.服务器处理请求并返回
5.浏览器解析并返回
6.断开连接

HTTP无状态:不对通信的状态进行保存
服务端创建特定Session
客户机的Cookies带sessionID
Cookie 被禁用怎么办?
最常用的就是利用 URL 重写把 Session ID 直接附加在URL路径的后面。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

流量控制:作用于接收者,避免数据发送过快出现来不及接收丢包。
利用rwdn接收窗口大小来实现,rwdn可能引发死锁:rwdn=0,a停止发送,b再次发送一个rwdn!=0 但是丢失 则b等待接收,A等待rwdn不为0的消息。
解决:接收到rwdn=0就用一个计数器,一段时间就发送是否有窗口信息,如果为0继续等待,不为0说明b传输的rwdn信息失败就重置窗口,避免了死锁。

拥塞控制:作用于网络.
发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口
慢开始 一开始不发送大量数据先检测网络拥塞状况,设置一个门限状态变量来控制cwdn
ssthresh>cwdn 慢开始
ssthresh=cwdn慢开始与拥塞避免算法任意
sstresh <cwdn 拥塞避免
慢指的不是增长慢是指开始cwdn=1慢开始阶段cwdn是大小是*2增长的
到拥塞避免之后cwdn一次增大一个
出现拥塞之后把门限变量设置为出现拥塞时的一半 然后cwdn设置为1
快重传
接收方收到一个失序报文后立马发送一个重复确认,出现三个重复确认,就直接重传对方未收到的报文
快恢复
发送方收到三个重复确认就进行乘法减小把状态变量sstresh减半,而不用重新开始cwdn=1的过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值