TCP/IP面试整理

TCP:

  (Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 [1]  另一个重要的传输协议。

IP:

  网络之间互连的协议(IP)是Internet Protocol的外语缩写
  网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议

  如今的IP网络使用32位地址,以点分十进制表示,如192.168.0.1。
  地址格式为:IP地址=网络地址+主机地址或 IP地址=网络地址+子网地址+主机地址。

OSI参考模型

就是国际标准化组织定义的计算机通讯和规范的步骤,主要有下面这七个分层,而且每一层为上一层提供服务,

OSI参考模型应用层表示层会话层传输层网络层数据链路层物理层

五层:

物理层——数据链路层——网络层——传输层——应用层

TCP报头

 

数据封装

TCP与UDP的区别。


(1)TCP:面向连接,可靠的,速度慢,效率低。

(2)UDP:无连接、不可靠、速度快、效率高。

三次握手四次挥手


1、 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?


        这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。


2、 为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?


这是因为:虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。 

TIME_WAIT的意义

(1)可靠地实现TCP全双工连接的终止

(2)允许旧的报文段在网络中消逝  

 

Version:版本号
IHL:首部长度 描述数据包首部大小
Packet Length:包长度 描述数据包的大小
Identification:每一个IP封装的数据包都会有一个标识码,用于数据包重组
Flage:标识数据是否被分片一共3位第二位为1时标识数据未分段当第三位为0时代表位被分片数据包的最后一个 第1位:保留位 第2位:不分片位 第3位:更多分片位
FragmentOffset(偏移值):标识该分段距离完整数据头部的距离
Time toLive:生存时间 单位为秒 被路由查找一次减一 发送地址位224.0.0.x TTL值为1 RIP和EIGRP的TTL
Protocol:协议号 描述上层协议类型或协议封装 范围0-255 0一般保留
Header Checksum:包头校验和对IP包头进行校验
Source Address:源IP
Destination:目的IP
Options:选项位可以没有
Padding:补充位

ICMP协议是Internet控制报文协议(Internet Control Message Protocol)它是TCP/IP协议族的一个子协议,用于在IP主机路由器之间传递控制消息。

IGMP协议是 Internet 组管理协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。

ARP协议是正向地址解析协议(Address Resolution Protocol),通过已知的IP,寻找对应主机的MAC地址

 

滑动窗口 (TCP流量控制)

        如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。TCP协议通过“滑动窗口(Sliding Window)”机制解决这一问题

        发送端是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据。也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),在底层通讯中这些数据可能被拆成很多数据包来发送,但是一个数据包有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议。

TCP-拥塞控制

TCP针对网络拥塞的场景有四种主要的算法:1)慢启动,2)拥塞避免,3)拥塞发生时的快速重传,4)快速恢复。

1)慢启动

TCP慢启动的意思是,刚刚加入网络的连接,一点一点地提速

2)拥塞避免

避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。很明显,是一个线性上升的算法。

3)拥塞发生时的快速重传

TCP 发送端应该根据传入的重复 ACK 使用“快速重传”算法来检测和修复丢包。快速重传算法使用3个重复 ACK 的到达作为段已丢失的标志。在接收到3个重复的 ACK 之后,TCP 执行丢失的段的重传,而不等待重传定时器到期。

4)快速恢复。

在快速重传算法发送丢失的段之后,“快速恢复”算法控制新数据的传输,直到非重复的 ACK 到达。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值