计算机网络

计算机网络

arp协议工作过程

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

  1. 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
  2. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址
  3. 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
  4. 源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

三次握手

  1. 第一次握手:client将标志位SYN置为1,随机产生一个值seq = j,并将该数据包发送给server,client进入SYN_SENT状态,等待server确认。
  2. 第二次握手:server收到数据包后查看SYN为1,知道client想要建立连接,server将SYN和ACk置1,ack=j+1,随机产生一个值seq=k,并将该数据包发送给client已确认连接请求,server进入SYN_RCVD状态。
  3. 第三次握手:client收到server发来的数据包检查ack是否为j+1,ACK是否为1,如果正确则建立连接成功,给server发送确认报文段,client和server进入ESTABLISHED状态,完成三次握手,随后client与server之间可以传输数据了。

第一次握手server收到client发来的数据包知道client发送没有问题,第二次握手client收到server发来的数据包知道自己发送接收都没问题,也知道server发送没有问题,第三次握手server收到client发来的数据包知道自己发送接收都没问题,可以开始发送数据了。

不采用三次握手的缺点:谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接”。主要目的防止server端一直等待,浪费资源。


四次挥手

  1. 第一次挥手:client发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态。
  2. 第二次挥手:server收到client发来的FIN后,发送一个ACK给client,确认序号为收到序号+1,server进入CLOSE_WAIT状态。
  3. 第三次挥手:server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态。
  4. 第四次挥手:client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,确认序号为收到序号+1,server进入closed状态,完成四次挥手。

TCP实现可靠传输

TCP的发送与接收:发送方的应用进程把字节流写入TCP的发送缓存,接收方的应用进程从TCP的接收缓存中读取字节流。

  1. 停等协议:A每发送一个数据包给B都需要等待B发过来的这个包的确认信号再进行下一个数据包的发送。
  2. 连续ARQ协议:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置,接收方采用累积确认的方式,也就是接收方不必对收到的每个分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,当传输过程中出现丢包现象时,采用回退N帧方式进行重传。
  3. 以字节为单位的滑动窗口:

TCP的流量控制

  1. 使用滑动窗口实现流量控制
  2. TCP的传输效率:使用nagle算法:若应用进程把要发送的数据逐个字节的送到TCP的发送缓存,则发送方就把第一个字节发送出去,把后面达到的数据缓存起来,当接收到对第一个字符的确认后,再把缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。只有在接收到前一个报文的确认后才发送下一个报文段。当数据到达速率快而网络速率比较慢时,用这样的方法可明显地减少所用的网络带宽。nagle算法还规定,当到达的数据已达到发送窗口大小的一半或者以达到报文段的最大长度时,就立即发送一个报文段。这样做可以有效的提到网络的吞吐量。

TCP的拥塞控制

  1. 慢开始
  2. 拥塞避免
  3. 快重传
  4. 快恢复

TCP/IP协议栈
数据链路层:以太网帧,最大报文段MTU
网络层:ip首部格式,ip分片,路由表,ICMP 查询+差错报文
传输层:UDP , TCP :首部,TCP连接控制(三次握手,四次挥手,同时打开,同时关闭,半关闭),超时重传(4个定时器)

四个定时器

  1. 超时重传计时器:每发送完一个分组启动超时重传计时器,当在超时重传计时器到期之前未收到确认则重传。
  2. 持续计时器:TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口的探测报文段,而对方就在确认这个报文段时给出现在的窗口值。
  3. 时间等待计时器:在四次挥手后,申请方必须经过时间等待计时器设置的时间2MSL(最长报文段寿命)后,才进入到CLOSED状态。
  4. 包活计时器:服务器没收到一次客户的数据,就重新设置保活计时器,时间设置通常为2小时,若2小时没有收到客户的数据,服务器就发送一个探测报文段,以后每隔75s发送一次,若一连发送10个探测报文段之后仍无客户的响应,则关闭这个连接。

应用层:DNS协议,DNS名字空间,DNS指针查询基本原理,DNS缓存;了解FTP协议;http协议,报文格式,状态码,HTTPS协议,详细握手过程,密码学算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值