网线拔掉之后,客户端收不到服务器发来的消息,服务器多次发送之后就关了,如果,服务器多次发送期间客户端把网线插上,此时需要重新建立连接,服务器发过来之后,客户端就向服务器发送reset标志位,让对端进行链接重置,对端也能正常关掉。
拔了网线 若服务器不给客户端发消息呢,会发送不携带数据的保活的报文 ,若不回复就关掉,
建立连接 四次挥手 通信 长时间不通信,有强容错。
服务端拔网线也一样。
简单允许丢包用udp ,其余tcp, 

pcb内有文件描述符表的指针,
count是引用计数,静态文件描述符表是这个数组array,可以通过 第二3个指针动态扩展,网络服务器可以扩展成65535大小,next fd就是下一次分配的文件描述符,
看一下文件file 
内有path,path内有挂载点和dentry
dentry内包含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队列就是这个,三次握手成功,链接结构体放在这里。链接结构体就是sock,bind bucket就是哈希表,listen套接字(进程pcb)和特定端口号(键值)绑定。
第一个成员是inet sock,
这个第一个是成员是connection,这个tcp socket包含了inet connectoion内部包含了inet socket 内部包含了sock,sock就是我们指针指向的,三次握手建立好一个链接,底层是创建tcpsock就行,所有其余的都有了,struct sock就直接指向第一个成员就行,强转类型就可以访问。
创建连接成功会建立一个tcpsock,accept时候上层返回一个套接字对象,创建file,sk指向下一个tcpsocket,file填入文件描述符给上层返回,所以就有了两个tcp套接字。
udp没有connection,只有 三层
sk可以指向第一个成员,因为第一个成员都是相等的,
为什么ip有首部长度,应用层数据后面还有管理空间,所以要有总长度。这样可以解决解包问题。
4位版本固定是说明是ipv4,
根据服务类型选择路径
软件问题或者硬件问题,报文可能环形转发,由于没有到达目标主机,所以报文可能一直进行转发,所以物理层可能存在集线器,做信号放大,保证传播更远。 那么这个报文就是不死不灭的。
这样就会积攒大量报文,全球网路越来越慢,所以设置ttl ,转一定次数就丢弃,
数据可能出错,通过16位校验和可以保证数据正确。
协议规定ip地址32位,因为要发到网络里,所以必须转成4字节大端。
路由器默认主机号是1