网络
IP协议是无连接的通信协议
他不会占用占用两个正在通信的计算机之间的通信线路。IP负责将每个包路由至目的地,IP没有做任何事证明数据包顺序和破坏与否。
所以IP协议不可靠需要上层协议确保。
1、TCP是面向连接的、可靠的、基于字节流的通信协议。
2、将应用层的数据流分割成报文段并发送给目标节点
3、数据包都有序号,对方收到则发送ack确认,未收到则重传。
4、使用校验和来检验数据在传输过程中是否有误
端口是传输层的范畴的
短链接一般只会在client和server间传递一次读写操作
Tcp保活功能,主要为服务器应用程序提供,服务器应用程序需要知道客户主机是否奔溃,从而可以代表客户使用资源。
如果一个给定的连接,在两个小时内没有任何的动作,则服务器就向客户发送一个探测报文段,客户主机必须处于以下四个状态之一:
1、客户主机依然正常运行,并从服务器可达,客户的tcp响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
2、客户主机已经奔溃,并且关闭或正在重新启动。任何一种情况下,客户的tcp都没有响应,服务器不能收到对探测的响应,并在75s后超时,服务器总共发送十个这样的探测,每个间隔75秒,若服务器没有收到一个响应,它就认为客户主机已经关闭,并终止连接。
3、客户主机奔溃并已重新启动,服务器收到一个对其保活探测的响应,这个效应是一个复位,使得服务器终止这个链接。
4、客户机正常运行,但服务器不可达
tcp 保护功能是探测长连接存活状况。 Tcp 的 keep-alive 是检查当前 tcp 是否还活着;http 的 keep-alive 是让一个 tcp 连接活多 久,他们是不同层次的概念。

pid只在本地唯一,所以带上port
可以唯一标识一个进程。
也被称为socket。
TCP是如何保证传输的可靠性?tcp是面向链接的可靠的字节流服务。
面向连接以为着两个使用tcp的应用(通常是一个客户端和一个服务器)在彼此交换数据之前必须建立一个tcp连接,在一个tcp连接中,仅有两方进行彼此通信,广播和多播不能用于tcp
Tcp通过下列方式提供可靠性:
1、将应用数据分隔为tcp认为最合适发送的数据块
2、超时重传:当tcp发出一个段后,他启动了一个定时器,等待目的端确认收到这个报文段。若不能及时收到一个确认,将重发这个报文段。
3、当tcp收到发自tcp连接另一端的数据时,他将发送一个确认(对于收到的请求,给除确认的响应)。这个确认不是立即发送,通常将推迟几分之一秒(之所以推迟,可能是要对包做完校验)
4、若tcp收到包,校验出包有错,丢弃报文段,不给出响应,tcp发送端会超时重传
5、对于失序数据进行重新排序,然后交给应用层(tcp报文段作为ip数据报进行传输,而ip数据报的到达可能会失序,因此tcp报文段到达也可能失序,若必要,tcp将对收到的数据进行重排,以正确的顺序交给应用层)
6、对于重复数据,直接丢弃。
7、tcp可以进行流量控制,防止较快主机导致较慢主机的缓冲区溢出。
字节流服务:两个应用程序通过tcp连接,tcp不在字节中插入记录标识符,我们将这种为字节流服务
TCP对字节流的内容不作任何解释,tcp不知道字节流的数据是二进制数据还是ASCII字符或其他类型数据,对字节流的解释由tcp连接双方的应用层。
https其实就是由两部分组成:http+ssl/tls,也就是在http上又加了一层处理加密信息的模块,服务端和客户端的信息传输都会通过tls加密,传输的数据都是加密后的数据。加解密过程:
1、客户端发起https请求(就是用户在浏览器中输入一个https网址,然后连接到server的443端口)
2、服务端的配置(采用https协议的服务器必须要有数字证书,这套证书就是一对公钥私钥。证书可以向组织申请)
3、传输证书(这个证书就是公钥,只是包含了很多信息)
4、客户端解析证书(由客户端tls完成,首先验证公钥是否有效,若发现异常,则弹出一个警示框,提示证书存在问题,若无问题,则生成一个随机值,然后用证书对随机值进行加密)
5、传输加密信息(这里传输的是加密后的随机值,目的是让服务端得到这个随机值,以后客户端和服务器端的通信就可以通过这个随机值来进行加密了)
6、服务端解密信息(服务端用私钥解密后得到了客户端传来的随机值,然后把内容通过该值进行加密。)
7、传输加密的信息
8、客户端解密信息,用随机数来解
客户端抓到的是加密的还是没加密的,应该是没有加密的。https保证的是传输过程中第三方抓包看到的是密文。客户端和服务端,无论如何都可以拿到明文
tcp与udp的差别在适用性上,并非在速度上,泛泛的说谁比谁快都是不恰当的。
tcp:http、ftp、pop3、telnet、smtp
udp:dns、rip、tftp
使用端口号来区分应用进程
http 请求过程——当我们在浏览器输入 www.baidu.com,然后回车之后的详解。1)域 名解析(域名 www.baidu.com 变为 ip 地址)。2)发起 tcp 的三次握手,建立 tcp 连接。浏 览器会以一个随机端口(1024-65535)向服务端的 web 程序 80 端口发起 tcp 的连接.这个请 求(原始的 http 请求,经过原始的 tcp/ip 四层模型层层封装),到达服务器端后,进入网 卡,然后进入内核的协议栈(一层一层拨开),然后到达 web 应用程序,最终建立了 tcp/ip 链接。3)建立 tcp 连接后发起 http 请求。4)服务器响应 http 请求,客户端得到 html 代码。 服务器 web 应用程序收到 http 请求后,就开始处理请求,处理之后就返回给浏览器 html 文件。5)浏览器解析 html 代码,并请求 html 中的资源。6)浏览器对页面进行渲染,并呈 现给用户。
域名解析过程:1)在浏览器中输入 www.baidu.com,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,若有就调用这个 ip 地址映射,完成解析。2)若 hosts 没有, 则找本地 dns 缓存。3)若 hosts 与本地 dns 缓存都没有,则找 tcp/ip 参数中设置的首选 dns 服务器,在此我们叫它本地 dns 服务器,此服务器收到查询时,若要查询的域包含在本地配 置资源中,则返回。4)若要查询的域名不是本地 dns 解析,但该服务器已经缓存了此网址 映射关系,则调用这个 ip 地址映射。5)若本地资源和缓存里都没有,则根据本地 dns 服务 器的设置(是否设置转发器)进行查询--1)未用转发模式,本地 dns 把请求发给根 dns 服务器, 根 dns 收到请求后会判断这个域名是谁来授权管理,则会返回一个负责的顶级域名服务器的 ip,本地 dns 服务器收到 ip 后,将到联系负责.com 的这个服务器,若这台负责.com 的服务 器无法解析,则找下一级 dns 服务器的 ip 给主机,依次下去。2)若用转发方式,dns 服务器 就把请求转发给上一级 dns 服务器,由上一级服务器进行解析,上一级服务器若不能解析,再上一级,以此循环。不管转发还是不转发,都把结果给本地 dns 服务器,再由本地 dns 服务器给客户机。 主机向本地域名服务器查询一般是递归查询,递归查询,就是若主机所询问的本地域名 服务器不知道查询域名的 ip 地址,则本地域名服务器就以客户的身份向其他根域名服务器 发出查询请求,而不是让主机自己进行下一步查询,所以递归查询返回的结果,要么是 ip 地址,要么报错。 本地域名服务器向根 dns 服务器的查询是迭代查询,当根域名服务器收到本地 dns 服务 器的请求时,要么返回一个 ip,要么告诉本地 dns 服务器,你下一步需要向哪一个 dns 服务 器查询,然后让本地服务器自己查询。
正向代理:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代 理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要哪 个无法访问的网站的内容,代理服务器取回来给我。server 不知道 client。 反向代理:client 不知道 server,并不是 URL 中请求的那个资源,而是不知道从什么地方来 的。以代理服务器来接收 internet 上的请求,然后将请求转发给内部网络的服务器,并将从 服务器上得到的结果返回给 internet 上请求的客户,此时代理服务器对外就表现为一个服务 器。1)保证内网安全、2)负载均衡,nginx 通过 proxy-pass-http 配置代理站点,upstream 实现负载均衡。 正向代理作用:1)访问原来无法访问的资源。2)可以做缓存,加速访问资源。3)但代理 可以记录用户访问记录(上网行为管理),对外隐藏用户信息。4)客户端访问权限,上网 进行验证。





通信双方互相通知对方x和y。
tcp会用这个序号拼接数据。

1+2+4+8+16次重发=31秒
+等待32秒
可能syn flood攻击风险
发了syn就下线了。











20个字节 8个字节

rto相当于重传时间




默认长连接


















浙公网安备 33010602011771号