TCP和UDP传输特点
1.1TCP传输特点:
- 端到端通信:客户应用程序在一端,服务器在另一端
- 建立可靠连接:建立连接时会测试网络的连通性
- 可靠交付:建立连接后会发送数据是可靠的,除非因为故障而不能可靠交付,发送方会得到通知
- 具有流控的传输:TCP控制数据传输的速率,防止发送方传送数据的速率快于接收方的接收速率,TCP可以用于从快速计算及向慢速计算机发送数据
- 双工传输:单个TCP连接允许同时双向传送数据
- 流模式:TCP从发送方向接收方发送没有报文边界的字节流
1.2TCP的首部
TCP首部各字段的含义如下:
- 源、目的端口号:用于寻找发送端和接收端的应用程序
- 首部长度:这个字段占4位,因此TCP最多有60字节的首部。如果没有选项字段,正常的长度是20字节
- 标志位:在TCP首部中有6个标志位
ACK:确认序号
SYN:同步序号用来发起一个连接
FIN:发送方完成发送任务
1.3TCP连接的建立和终止
连接步骤:
- 客户端发送一个SYN报文段指明客户打算连接的服务器端口,发送后,客户进去SYN_SENT状态
- 服务器启动后首先进去LISTEN状态,当它接收到客户端发来的SYN后,进入SYN_RCV状态,并发送SYN报文作为应答,同时将确认序号设置为客户的初始号+1,对客户的SYN进行确认。
- 客户端收到确认报文后进入ESTABLISHED状态,表明本方连接已经成功建立,客户将确认序号设置为服务器ISN+1,对服务器的SYN报文段进行确认,当服务器接收到确认报文后,也进入ESTABLISHED状态。
关闭步骤:
- 客户的应用进程发起关闭连接请求,它将导致TCP客户发送一个FIN报文段,用来关闭客户到服务器的数据传送,此时客户进入FIN_WAIT_1状态
- 当服务器收到这个FIN,它发回一个ACK,进入CLOSE_WAIT状态,确认序号收到的序号+1。客户收到该确认后进入FIN_WAIT_2状态,表明本方连接已经关闭,但是仍然能够接收服务器发来的数据
- 接着服务器程序关闭本方连接,其TCP端发送一个FIN报文段,进入LAST_AC状态,当客户接收到该报文段后进入TIME_WAIT状态
- 客户在收到服务端发送的FIN请求后,发回一个确认,并将确认号设置为收到的序号+1,发送FIN将导致应用程序关闭他们的的连接,服务器收到确认后,连接关闭,这些FIN的ACK是有TCP软件自动产生的
1.4流式套接字的交互模型
2.1UDP传输特点
- 多对多通信:多个发送方可以向一个接收方发送报文,一个发送方也可以向多个接收方发送报文
- 不可靠服务:报文可能丢失,重复或者无序,并且它没有重传措施,如果发生故障,也不会通知对方
- 缺乏流量控制:当数据包到达的速度比接收系统或应用的处理速度快时,只是将其丢弃而不会发出警告或者提示
- 报文模式
2.2UDP的首部
UDP各字段的含义:
- UDP校验和:UDP校验和是端到端的校验和,它由发送端计算,然后由接收端验证,其目的是发现UDP首部和数据在发送端到接收端之间发生的任何改动。
2.2数据报套接字的交互模型
相关文章:

css3之 渐变
CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡。 以前,你必须使用图像来实现这些效果。但是,通过使用 CSS3 渐变(gradients),你可以减少下载的事件和宽带的使用。此外…

CRM:把 isv.config.xml 按钮事件移动到 entity.onload()
大家都知道在ISV.CONFIG里可以添加按钮,然后添加按钮事件,比如下面: <Entities><Entity name"account"><ToolBar ValidForCreate"0"ValidForUpdate"1"><Button Icon"/_imgs/ico_18_…
Matlab与线性代数 -- 均匀分布的随机矩阵
本微信图文详细介绍了Matlab中均匀分布的随机矩阵函数rand、rands、randperm。

pytest实战--参数化parametrize+前置fixture
文章目录参数化 parametrize适用场景一个典型的例子前置fixture参数化适用场景一个典型的例子示例2个人疑问?pytest既可以用来做单元测试,也可以用来做自动化接口测试,pytest可以结合allure生成漂亮的测试报告,经过一段时间的学习…
Matlab与机器学习 -- BP网络神经元上的转移函数
本图文详细介绍了BP神经网络常用的转移函数及其导数,单极性Sigmoid函数,双极性Sigmoid函数,线性函数。

在baidu上找到自己
在baidu上搜了我经常用的用户名,找到了这里,一看都满屋子都是灰尘,我打扫了一下。也清理了自己。发现那时的自己好冲动、好小孩。 其实现在也一样。我不想去否认自己的过去,但也不想公开这段过去。因为它在这个废弃的屋子里很安静…

selenium--iframe之模拟qq空间登录
文章目录前言分析切换iframe前言 我在模拟登录qq的时候,发现无论如何都定位不了qq的“账号密码登录”,怎么都进不去qq的登录页面,如下图所示 分析 打开 https://qzone.qq.com/然后点击二维码登录这块,背景出现了灰色ÿ…

Java读取Properties配置文件
目录1.Properties类与Properties配置文件2.Properties中的主要方法3.示例1.Properties类与Properties配置文件Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集。不过Properties的键和值都是字符串类型。2.Properties中的主要方法(1)l…
《C#精彩实例教程》小组阅读02 – Visual Studio简介与安装
本图文详细介绍了什么是Visual Studio,以及Visual Studio的安装过程。 上一次我们介绍了Visual Studio 2015的下载,以及MSDN。 这一次,我们说说什么是Visual Studio以及如何安装。 Visual Studio(简称VS)是微软公司…

从.NET寻找出路
自从成了金融危机的牺牲品之后,一直在寻找出路. 从.NET开发人员 到 待业青年, 再到现在的 技术支持,有些茫然,不知道未来在哪里!! 工作一年半,发现给别人打工没啥发展,…

关于高速光耦6n137的使用总结_光耦使用中的那点事1
目前通用的隔离器件有光耦、变压器隔离、电容耦合等三大主流方式。其中光耦和变压器隔离使用的较多,有很多地方都可以见到。本次推送主要介绍光电耦合器的几个使用注意事项,以下截图数据来源于TLP785的数据手册。1、延时时间大家可以看到在5V供电情况下&…

javascript回调函数笔记
来源于:https://github.com/useaname/blog-study 在Javascript中,函数是第一类对象。意味函数可以像对象一样按照第一类被管理使用。回调函数是从一个叫函数式编程的编程范式中衍生出来的概念。简单来说,函数式编程就是使用函数作为变量。函数…

工厂方法模式与抽象工厂模式的区别
工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具…
LSGO代码小组第18周复盘日志
LSGO软件技术团队第18周代码小组学习复盘日志。

唐山松下焊接机器人编程招聘_机器人四小家族-松下Panasonic专注焊接
在日本松下的网站,机器人是和焊接系统方案是在一起的。松下机器人的历史(来源于松下公司网站)1980年松下AW系列弧焊机器人投放上市,机器人系统之间采用的是单向模拟通讯方式模拟通讯的机器人1983年示教的容易化1988年减少干涉的设…
基于Matlab的BP神经网络在非线性函数拟合中的应用
本图文详细介绍了如何利用Matlab神经网络工具箱实现BP神经网络对非线性函数的拟合。

aligned_storage简单学习
#include <iostream> #include <type_traits> #include <string>/* template< std::size_t Len, std::size_t Align default-alignment >struct::type aligned_storage; 相当于一个内建的POD类型他的大小是Size他的对齐方式是Align */ template<c…

有关高级关系引擎中存在错误
SQL server2005 Analysis Services项目中出现以下错误 高级关系引擎中存在错误。 无法与 DataSourceID 为“Adventure Works DW”、名称为“Adventure Works DW”的数据源建立连接。 但是数据源测试连接是好使的,搜到已解决办法,数据源对里双击…

c#中接口的使用方法图解_C#图解教程 第十五章 接口
接口什么是接口接口是指定一组函数成员而不实现它们的引用类型。所以只能类和结构来实现接口。这种描述比较抽象,直接来看个示例。下例中,Main方法创建并初始化了一个CA类的对象,并将该对象传递给PrintInfo方法。classCA{public stringName;p…

提高C#编程水平的50个要点
1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之间,优先使用 as 操作符 4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if 5.总是为自定义类重载 ToString 方…

1.6 INSERT语句
1.6 INSERT语句正在更新内容,请稍后
基于Matlab的多层BP神经网络在非线性函数拟合中的应用
本图文详细介绍了如何利用Matlab神经网络工具箱实现多层BP神经网络对非线性函数的拟合。

华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略
大数据处理当中,数据储存始终是一个重要的环节,从现阶段的市场现状来说,以Hadoop为首的大数据技术框架,仍然占据主流地位,而Hadoop的HDFS,在数据存储方面,仍然得到重用。今天的大数据入门分享&a…

linux调试C++错误: 程序中有游离的‘\240’‘\302’
今天在网上找到一个小程序,一编译出现一大堆的错误: 程序中有游离的 ......开始觉得可能我从网页上直接复制的代码中有别的字符。于是把中文的全角空格全部替换了。这次好多了,少了一些,不过还有很多,调试信息说是XX行…

IE8下不识别indexOf的问题
1、为Array原型添加indexOf方法(如果学过面向对象,相当于给Array类添加实例方法),方法体如下: //添加数组IndexOf方法 if (!Array.prototype.indexOf){Array.prototype.indexOf function(elt /*, from*/){var len this.length >>> 0;var from Number(arguments[1])…
《C#精彩实例教程》小组阅读05 -- C#变量与常量
本微信图文介绍了C#的变量与常量。

k均值聚类算法考试例题_一文读懂K-means聚类算法
1、引言什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习。监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入、特征、自变量)与标签&…
《C#精彩实例教程》小组阅读06 -- C#运算符与表达式
本微信图文介绍了C#的运算符与表达式。

kvm启动报错
[rootstorage ~]# virsh -c qemu:///system list error: failed to connect to the hypervisor error: Failed to connect socket to /var/run/libvirt/libvirt-sock: No such file or directory原因:libvirt未启动解决方法[rootstorage ~]# libvirtd -d [rootst…

邀请参加活动的邀请函_圣诞节活动策划邀请函在线制作
2020年就要过去了,许多人说这一年很难,难上加南。莎士比亚说凡是过去,皆为序章。无论好的还是坏的终究会成为过往,向前看吧。圣诞节快要到来,商场开始布置精致的橱窗,电商巨头也在忙着做促销,幼…