IP协议和TCP协议详解

  • IP协议
    • IP协议的特点
    • IPV4头部信息
    • IP分片
    • 重定向
    • IPV6头部结构
  • TCP协议
    • TCP协议的特点
    • TCP头部结构
    • TCP连接的建立与关闭
      • 异常终止连接
      • 异常终止连接
    • TCP超时重传
    • 拥塞控制

IP协议

IP协议的特点

IP协议是TCP/IP协议族的动力,它为上层提供无状态的,无连接、不可靠的服务。
无状态:IP通信双方不同步传输数据的状态信息,因此IP数据报的发送、传输、和接收都是相互独立,没有上下文关系的。
无连接:IP通信双方都不长久的维持对方的任何消息。所以,上层协议每次发送数据,均需要明确指明对方的IP地址。
不可靠:IP协议不能保证IP数据报准确到达接收端。发送端的IP模块一旦检测到IP数据报发送失败,就通知上层协议发送失败,不重传。只发送ICMP错误信息(IP头部参数错误)。ICMP即因特网控制协议,用于检测网络连接。主要分为差错报文和查询网络信息(ping)。
注意,ping是应用程序,不是协议。
无状态的缺点:
无法处理乱序和重复的IP数据报 。接收端的IP模块只要收到了完整的IP数据报,就将其数据交给上层协议。而面向连接的协议,例如TCP,可以自己处理乱序和重复的报文段,它递交给上层的协议内容是肯定有序且正确的。
注意,IP头部字段16位的唯一标识字段,是用来处理分片和重组的,不是用来指定接收顺序的。

IPV4头部信息

IP分片

当IP数据报的长度超过帧的MTU(最大传输单元)时,它将被分片传输。
分片可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。
注:
1.当IP数据报被分为多个IP分片,每个IP分片都有自己的IP头部(20字节),且除了最后一个分片不设置MF(更多分片)外,其他分片均设置。
2.仅第一片的IP分片中包含ICMP头部内容,因为重组的时候,一份即可。ICMP头部长度取决于报文的类型。

重定向

ICMP重定向报文用于更新路由表。
ICMP重定向报文的数据部分,它给接收方提供了两个信息:
1.引起重定向的IP数据报的源端IP地址。
2.应该使用的路由器的IP地址。
那么接收主机即可根据这两个信息来断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此更新路由表。(更新路由表缓冲,而不是直接更新)

IPV6头部结构

  • IPv6解决了IPV4地址不够用的问题,头部由40字节的固定头部和可变长的扩展头部组成
  • 增加了多播和流的功能,为网络上的多媒体内容的质量提供精细控制;
  • 引入自动配置功能;增加了专门的网络安全功能。

TCP协议

TCP协议的特点

面向连接,字节流,可靠传输三大特征。

  • TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。且都要分片必要的内核资源。全双工。完成数据传输后,双方断开连接释放资源。
  • 基于流的。当发送端应用程序连续执行多次读操作时,TCP模块先将这些数据放入TCP发送缓冲区,TCP模块真正开始发送数据时,发送缓冲区的数据可能被封装为一个或者多个TCP报文段发出。因此TCP模块发出的TCP报文段和应用程序执行的写的次数没有固定数量关系。
  • UDP基于数据报则不是。发送端每执行一次写操作,UDP模块就将其封装成一个UDP数据报发送。接收端必须及时执行读操作,否则就会丢包。(发生在慢的服务器上)。如果用户没有足够的用户缓冲区来读取UDP数据,数据将被截断。
  • TCP传输是可靠的。首先采用应答机制,发送的每个报文必须得到接收方的应答才代表发送成功。其次,采用超时重传机制,发送端在发送一个TCP报文后就启动定时器,如果在指定时间内未收到应答,它将重发该报文段。

TCP头部结构

TCP头部最长是60字节,其中包含20字节的固定部分,40字节的可选部分

TCP连接的建立与关闭

三次握手建立连接,四次挥手关闭连接。

  • 采用三次挥手是确保双方都能发送自己的初始序列号,并对方对自己的序列号进行确认。
  • 采用四次挥手是因为当一端发起关闭连接的时候,另一端可能还有数据没发送完,所以需要将ACK和FIN关闭连接分开发送。而这种本端已经关闭连接,但允许继续接收对方的数据,直到对方也发送结束报文段以关闭连接。TCP连接的这种状态叫做半连接状态。
    注意:当read系统调用返回0的时候,说明对方已经关闭连接。(还有其他的检测方法)
    可以使用netstat命令来查看TCP连接状态。
  • TIME-WAIT状态是当客户端收到服务端的结束报文(FIN)之后客户端处于的状态,在这个状态里,客户端连接要等待2MSL(2倍的最大报文生存时间),才能完全关闭。原因有两个:
    1.可靠的终止TCP连接。(当客户端发出最后一个ACK之后,如果ACK在途中丢失,便于重发ACK能够顺利到达服务器端)
    2.保证让迟来的TCP报文有足够的时间被识别并丢弃。因为当一个TCP连接处于TIME-WAIT状态时,即就无法立即使用该连接占着的端口来建立连接。如果不存在TIME-WAIT状态,那么新的连接就会收到旧的连接的迟到的报文段,就会发生错误。

异常终止连接

TCP提供了一个异常报文段的终止方式:
给对方发送一个复位报文段,发送端所有等待发送的数据的都会被丢弃。

异常终止连接

当服务器(或者客户端)关闭或者异常终止了连接,而对方并没有收到结束报文段,所以还维持着和原来一样的连接,而服务器端即使重启也没有任何连接的信息,称处于这种状态的连接为半打开连接。如果客户端往半打开状态的连接写数据,那么对方将会回复复位报文段。

TCP超时重传

TCP模块为每一个TCP报文段都维护一个重传定时器,在TCP报文第一次发送时启动,如果超时时间内没有收到应答,TCP模块将重传TCP报文段并且重置定时器。

拥塞控制

分为慢启动、拥塞避免、快速重传、快速恢复四部分。
拥塞控制的是发送端向网络一次连续写入的数据量(即发送窗口)SWND。也即发送端能连续发送的TCP报文段数量。TCP报文段最大长度为SMSS,一般等于MSS。
如果SWND太小,会引起网络延迟,如果太大,会容易导致网络拥塞。
接收端可通过其接收通知窗口(RWND)来控制发送端的SWND。但是显然是不够的,所以引入了拥塞窗口的概念,通常SWND取RWND和拥塞窗口的最小值。

  • 慢启动:刚开始拥塞窗口设置为1SMSS,之后在收到一个ACK之后,指数倍增加,
  • 拥塞避免:当增加到阈值的时候,改为线性增长。
  • 快速重传和快速恢复:当接收到超过三次重复的确认报文段,进入快速重传阶段,阈值改为当前拥塞窗口的一半,拥塞窗口改为1SMSS。
  • 之后再改为拥塞避免阶段,即拥塞窗口线性增长。

IP协议和TCP协议详解相关推荐

  1. Linux网络-UDP/TCP协议详解

    Linux网络-UDP/TCP协议详解 零.前言 一.UDP协议 二.TCP协议 1.应答机制 2.序号机制 3.超时重传机制 4.连接管理机制 三次握手 四次挥手 5.理解CLOSE_WAIT状态 ...

  2. 计算机网络整理:UDP协议和TCP协议

    系列文章目录 HTTP协议和HTTPS协议 文章目录 系列文章目录 一.TCP/IP 各层协议 二.UDP协议和TCP协议 1.TCP和UDP的区别 2.UDP 协议 3.TCP 协议 1)特点 2) ...

  3. 【工控老马】西门子PLC Siemens PLC TCP协议详解

    Siemens PLC TCP 协议详解 说明:蓝色文字表示已经破解部分,[红色文字] 表示对破解部分数字的说明,黑色文字表示对破解部分的进一步说明,黑色斜体加粗文字表示未破解部分,高亮文字部分表示驱 ...

  4. http协议及http协议和tcp协议的区别

    http是应用层的协议,并且无连接,无状态的协议. http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,he ...

  5. http协议与https协议+UDP协议和TCP协议+WebSocket协议下服务端主动去发送信息+对称加密与非对称加密+get和post请求方式区别详解+浏览器内核以及jsj解析引擎

    TCP和UDP协议是TCP/IP协议的核心. 在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Control Protocol).UDP(用户数据报协议,User Data P ...

  6. IP/TCP协议详解

    系列文章目录 第一篇 : TCP/IP协议详解 第二篇 : IP协议 第三篇 : TCP协议 第四篇 : 面试准备 文章目录 系列文章目录 前言 第一章.TCP/协议族 1.1 层次介绍 1.2 封装 ...

  7. 计算机网络 | 传输层 :UDP与TCP协议详解

    传输层 UDP UDP的协议格式 UDP的特点 基于UDP的应用层知名协议 UDP如何实现可靠传输 TCP TCP的协议格式 TCP的特点 连接管理机制 三次握手 四次挥手 保活机制 问题补充 可靠传 ...

  8. TCP协议详解----Linux学习笔记

    传输层概述 传输层协议主要有两个:TCP协议和UDP协议 TCP服务特点: TCP协议的特点是:面向连接.字节流和可靠传输.(相对UDP协议而言的) 面向连接: 1.使用TCP协议的双方必须先建立连接 ...

  9. TCP协议详解(一) TCP服务的特点和TCP头部结构

    从重点内容四方面来讨论TCP协议: 1:TCP头部信息.TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流. 2:TCP状态转移过程. ...

最新文章

  1. C#学习视频分享与开发技术QQ交流群
  2. java圆角矩形_如何在java中使用普通矩形轮廓绘制圆角矩形
  3. Linux学习:文件 I/O 函数
  4. 错误:ORA-28002: the password will expire within 7 da
  5. Vue3开发教程(全)
  6. H5商城,纯前端静态页面
  7. C#实现QQ自动登录器实现原理
  8. ES6 模板字符串基本用法
  9. 理解的三极管输出特性曲线图的放大区和饱和区,利用∆Ic小于∆βIb差值比较曲线左移右移关系
  10. WIN10 任务栏卡死解决办法
  11. |9 其他(linux特定的), 用来存放内核例行程序的文档.,Linux常用操作指令
  12. 〖Python 数据库开发实战 - Python与MySQL交互篇⑯〗- 项目实战 - 实现用户管理 - 新增用户功能
  13. matlab 怎么使用mathtype,教你怎样在Authorea里面使用MathType
  14. 一个好的学习方法——MAS 学习法
  15. 前端css样式及选择器
  16. 金融数据类——全球股市
  17. WebWork深入探索之初见端倪
  18. FPGA之OV7725摄像头采集与VGA显示实验--4--摄像头数据输出VAG协议分析
  19. html侧边工具栏,侧边栏工具条
  20. 中国电信开启移动互联网“全”时代

热门文章

  1. Oracle数据库分页查询关键字rownum理解
  2. 计算机专业试讲10分钟教案,10分钟试讲教案怎么写
  3. 面子值几个钱?人为什么而活
  4. 唯品会Q3季报图解:Non-GAAP净利16亿 斥资2.6亿美元回购股权
  5. 基于AI的图像处理软件——项目总结
  6. 【浏览器工作原理与实践笔记一】:宏观视角上的浏览器
  7. word2016微软官方使用手册
  8. HIT-PYTHON学习笔记(1)-20170705
  9. 记一次失败的MySQL修复经历,报错信息:Tablespace X was not found at X;Set innodb_force_recovery=1 to ignore this
  10. 【报告分享】中国娱乐社交企业出海发展专题2021-易观智库(附下载)