unp第七章补充之socket tcp 产生 rst响应的情况

socket tcp 产生 rst响应的情况(属于硬错误)

1.     syn发送到服务器主机,但是目的端口并未运行。则产生一个ECONRFUSED错误。客户端立即返回。比如telnet 192.168.1.55 8889,条件:55主机在局域网上并且可达(也可以换成可以到达的网络ip地址),但是8889这个端口并未使用(可能服务器已经关闭),则服务器(对方主机tcp内核)发送一个rst相应给客户端,于是客户端立即关闭。 注意一下,如果输入的网络ip不可达的话,客户端将会持续发送syn,最后产生一个etimeout的错误,大概75秒左右。这个时候客户端的默认网关(192.168.1.1 211.2.2.2)因为找不到下一路由,路由器(或者再过几跳的路由器)会产生一个EHOSTUNREACH响应给客户端(注意,ENETUNREACH和EHOSTUNREACH通常被认为是一个错误,因为ENETUNREACH一般当作已过时),由于这是个软错误(有可能是网络暂时不通造成的)。客户端会重发syn直到超时。

所以会有 telnet 192.168.1.55 8888  主机存在,但是端口未开,ECONRFUSED错误,立刻返回

telnet 192.168.1.56 *     主机不存在,UNROUTETOHOST错误,立刻返回

telnet 211.1.1.5    *     主机不存在,etimeout错误

2.    最简单的情况,服务器主动发送rst给客户端关闭连接。客户端read write直接返回rst错误。

3.    服务器收到一个不存在的连接返回rst响应。比如,服务器重启之后,先前的一个已连接的客户端毫不之情的情况下,这就是半闭连接(跟半开连接最大的不同是,半闭连接是不能使用的,半开连接可以使用)。

此时   如果客户端read的话(接收缓冲无数据)产生一个EPEERRST错误

如果客户端write的话且发送数据小于发送缓冲区剩余容量时,第一次write成功,第二次write或者read的时候就会产生一个EPEERRST的错误。因为write发送数据是直接把要发送的数据拷贝到内核的tcp发送缓冲区就立刻返回成功的。当然拷贝之前会先检查一下tcp连接有无错误。所以第二次发送或者接收的时候,发现连接上已经有了EPEERRST的错误,所以就返回错误(话说回来,第一次发送的数据实际上根本就没有发送成功,对方根本就没接受它

时间: 2025-01-19 14:32:48

unp第七章补充之socket tcp 产生 rst响应的情况的相关文章

unp第七章补充之TCP半开连接与半闭连接

半打开(Half-Open)连接和半关闭(Half-Close)连接.TCP是一个全双工(Full-Duplex)协议,因此这里的半连接"半"字就是相对于全双工的"全"来说的. 一.半开连接 从协议定义的角度来说,TCP的半开连接是指TCP连接的一端异常崩溃,或者在未通知对端的情况下关闭连接,这种情况下不可以正常收发数据,否则会产生RST(后面内容我们在介绍RST).比如一个常见的情况是TCP连接的一端异常断电,就会导致TCP的半开连接.如果没有数据传输,对端就不会

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用. 补充内容:http://blo

第七章 本源时空(补充)

                第七章        本源时空(补充) ?      第七章是匆匆结束的,有点文不对题.什么是本源时空,没有详细的论述.2个月来.我一直想做个小结,无奈心不在焉,忙于正业的玩游戏.看小说.其实,真正的原因.后面或许.会说一下吧.     我敢确定相对论.量子论等垃圾理论,100%是错误的,都将成为历史.按照本人30多年的实战经验总结,我的理论95%以上是对的:或许在小节上.不经意的地方有错误吧.嗯.注明一下:我不是"春哥",不需要"信我者永生&

第5章-unix网络编程 TCP/服务端程序示例

这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的 客户端代码 #include "unp.h" //static void str_cli1(FILE*fp,int sockfd); int main(int argc,char *argv[]) { int sockfd; struct sockaddr_in servaddr; sockfd=Socket(AF_INET,SOCK_ST

【转】第七章、Linux 文件与目录管理

原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 在第六章我们认识了Linux系统下的文件权限概念以及目录的配置说明. 在这个章节当中,我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换. 创建与删除目录.创建与删除文件,还有寻找文件.查阅文件内容等等, 都会在这个章节作个简单的介绍啊! 1. 目录与路径 1.1 相对路径与绝对路

操作系统 庞丽萍 第七章

1. 存储管理的功能与目的是什么? 主要包括以下四个方面:(1)映射逻辑地址到物理主存地址:(2)在多用户之间分配物理主存:(3)对各个用户区的信息提供保护措施:(4)扩充逻辑主存区. 2.物理地址 VS 逻辑地址 把内存分成若干个大小相等的单元,每个单元给个编号,就是物理地址,又称为绝对地址或者实地址: 逻辑地址是用户编程序时所用的地址,又称为程序地址或者虚地址. 为了支持多道程序运行,方便用户使用:使得多用户程序共享主存, 必须要解决主存区域如何分配.各个区域内信息如何保护等问题.如果直接以

《大道至简》第七章第八章读后感

第七章中提到“王不如远交而近攻,得寸则王之寸,得尺亦王之尺也.”这句话出自<战国策.秦策三>,翻译过来就是“大王您还不如和远的国家结盟,而进攻近距离的国家,这样得到的一寸土地是大王您的,得到一尺土地也是大王您的一尺.”这是一种十分正确的外交和军事的策略,是和远方的国家结盟,和相邻的国家为敌.这样既可以防止邻国肘腋之变,又能使敌国两面受敌,无法与我方抗衡.这在当今的软件市场也是一样的,各个大企业之间不断并购,对标准.理论.语言上的争夺,未必也就是出于对“软件实现的考虑”.其最终的实质不过也就是一

第七章、epub文件处理 -- 解析 .xhtml文件 (一)

第七章.epub文件处理 -- 解析 .xhtml文件 (一) 本章将介绍代码如何利用ZLTextPlainModel类来分别处理.xhtml文件中的文本信息与标签信息. 本章涉及的核心类是ZLTextPlainModel类.ZLTextWritablePlainModel类.CachedCharStorage类.XHTMLTagAction接口实现类 .xhtml文件中包含着两种信息:文本信息与标签信息.我们需要先正确解析出标签信息代表的结构,才能正确得将文本信息显示在屏幕上. 举个例子:(这

《无码的青春》第七章 御姐

之前我们各有各的故事,各有各的守护,然而今天却成了同一类人,失去了各自的女神,失去了自己的信仰,没有了牵挂,也不再需要对什么人负责.四个单身男人,在这个浮华的城市里尽情的释放着过剩的荷尔蒙.周末我们会聚在道哥的酒吧里,在浮光掠影的酒精和静静的音乐中沉沦,乃至迷失了自我.谈不上堕落,我们只是不再属于某一个女人,于是,我们让自己属于所有的女人.终有一天,我们会发现自己变了,甚至变成了自己曾经最讨厌的人的模样.当天空闭上眼睛时,便迎来了夜的黑,但是这黑夜从来不是永恒的,总会有那么一束阳光吻醒沉睡的天空