网线拔掉之后客户端收不到服务器发来的消息服务器多次发送之后就关了如果服务器多次发送期间客户端把网线插上此时需要重新建立连接服务器发过来之后客户端就向服务器发送reset标志位让对端进行链接重置对端也能正常关掉。拔了网线 若服务器不给客户端发消息呢会发送不携带数据的保活的报文 若不回复就关掉建立连接 四次挥手 通信 长时间不通信有强容错。服务端拔网线也一样。简单允许丢包用udp ,其余tcppcb内有文件描述符表的指针count是引用计数静态文件描述符表是这个数组array,可以通过 第二3个指针动态扩展网络服务器可以扩展成65535大小next fd就是下一次分配的文件描述符看一下文件file内有path,path内有挂载点和dentrydentry内包含inode这是文件所对应的操作表fcount是引用计数flag是打开文件的选项mode是权限pos是读写位置fmapping指向内核缓冲区void private data可以指向其他对象socket,若进程读取该套接字没有数据就可以把指定进程pcb放入该套接字等待队列里所以阻塞当有数据硬件会触发中断识别网卡中断执行中断向量表可以检测系统当中打开的套接字state变化了再放入run队列就可以read读。sk指针的sock内有accept不参与三次握手底层可以直接建立链接那么怎么维护的先描述在组织链接就是file socket sock这个sock内还有skbuff内就是报文receive和write就是接收发送缓冲区链式结构通过算法抓化成字节流读取udp就不用write,就是一个节点就是一个节点往上拿。收一个数据就是一个skbuff,skbuff有四组指针指向数据块按照协议报头解析拷贝上去就读到了有边界的数据。这是udp.udp 还是tcp,我要知道原ip port 目的ip port 还包含了sock对象connection sock包含请求队列三次握手连接要维护我们正在进行连接需要accept队列就是这个三次握手成功链接结构体放在这里。链接结构体就是sockbind bucket就是哈希表listen套接字进程pcb和特定端口号键值绑定。第一个成员是inet sock,这个第一个是成员是connection这个tcp socket包含了inet connectoion内部包含了inet socket 内部包含了socksock就是我们指针指向的三次握手建立好一个链接底层是创建tcpsock就行所有其余的都有了struct sock就直接指向第一个成员就行强转类型就可以访问。创建连接成功会建立一个tcpsockaccept时候上层返回一个套接字对象创建filesk指向下一个tcpsocketfile填入文件描述符给上层返回所以就有了两个tcp套接字。udp没有connection只有 三层sk可以指向第一个成员因为第一个成员都是相等的为什么ip有首部长度应用层数据后面还有管理空间所以要有总长度。这样可以解决解包问题。4位版本固定是说明是ipv4,根据服务类型选择路径软件问题或者硬件问题报文可能环形转发由于没有到达目标主机所以报文可能一直进行转发所以物理层可能存在集线器做信号放大保证传播更远。 那么这个报文就是不死不灭的。这样就会积攒大量报文全球网路越来越慢所以设置ttl 转一定次数就丢弃数据可能出错通过16位校验和可以保证数据正确。协议规定ip地址32位因为要发到网络里所以必须转成4字节大端。路由器默认主机号是1课堂板书/20250518_IP.png · whb-helloworld/113 - 码云 - 开源中国