note_22:TCP、UDP、HTTP

8 篇文章 0 订阅

TCP、UDP、HTTP


参考



1. TCP

  • Transmission Control Protocol 传输控制协议
  • TCP在IP报文的协议号是6
  • TCP是在不可靠的IP层之上实现的可靠的数据传输协议,主要解决传输的可靠、有序、无丢失和不重复的问题。

(1)特点

  1. 面向连接的传输层协议。
  2. 有建立连接,每一条TCP只能有两个端点,每一条TCP只能是点对点的(一对一)。
  3. TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序
  4. TCP提供全双工通信,TCP允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和连接缓存,用来临时存放双方通信的数据。
  5. TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流

(2)三次握手

  1. 客户机的TCP首先向服务器的TCP发送一个连接请求报文段,不包含应用层数据,首部SYN = 1。客户机会随机选择一个起始序号seq = x(这个seq是随机选择的,没有什么特殊含义,不过就是要选择)。连接请求报文不携带数据,但是会消耗一个序号。
  2. 服务器的TCP受到连接请求报文段后,如果同意建立连接就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,ACK = 1SYN = 1ack = x+1(就是回应上面的seq=x,表示受到了客户机的报文段,然后需要接收下一个序号的报文,所以+1),服务器随机产生起始序号seq = y确认报文不携带数据,但是会消耗一个序号。
  3. 当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。在确认报文段中,ACK = 1seq = x+1ack = y+1该报文段可以携带数据,如果不携带数据则不消耗序号。

注意!

服务器端的资源在第二次握手时就分配的,而客户端的资源是在完成第三次握手时分配的。所以服务器易于受到SYN洪泛攻击

(3)四次挥手

  1. 客户机打算关闭连接,就向TCP发送一个连接释放报文段,并且停止再发送数据,主动关闭TCP连接。报文段中,FIN = 1seq = u(前面已传送过的数据的最后一个字节的序号+1)。FIN报文段即使不携带数据,也要消耗掉一个序号。TCP是全双工的,当发送FIN报文时,发送FIN的一端就不能再发送数据,也就是关闭了其中一条数据通路,但双方还可以发送数据
  2. 服务器收到连接释放报文段后就发出确认,ack = u+1,这个报文段的序号是seq = v(前面已传送过的数据的最后一个字节的序号+1)。客户机到服务器这个方向的连接就释放了。TCP连接处于半关闭状态。但服务器如果发送数据,客户机仍要接收,从服务器到客户机这个方向的连接还没有关闭
  3. 如果服务器已经没有要向客户机发送的数据,就通知TCP释放连接,发出FIN = 1的连接释放报文段。
  4. 客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK = 1ack = w+1seq = u+1TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,客户机才进入连接关闭状态。

(4)拥塞控制

TCP的拥塞控制


2. UDP

  • User Datagram Protocol 用户数据报协议
  • UDP在IP报文的协议号是17

(1)优点

  1. 不需要建立连接,UDP不会引入建立连接的时延。
  2. 无连接状态,不追踪接收和发送缓存、拥塞控制参数和序号与确认号的参数。专用应用服务器使用UDP时,一般都能支持更多的活动客户机。
  3. 分组首部开销小。TCP有20字节的首部开销,而UDP仅有8字节。
  4. 应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞也不会影响主机的发送效率。(某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP正好满足这些应用的要求。)

(2)特点

  1. UDP常用于一次性传输比较少量数据的网络应用,如DNS、SNMP等,因为对于这些应用,如果采用TCP,那么将为连接创建、维护和拆除而带来不小的开销。
    UDP也常用于多媒体应用(如IP电话、实时视频会议、流媒体等),显然,可靠数据传输对这些应用来说不是最重要的,但TCP的拥塞控制会导致数据出现较大的延迟,这是不可容忍的。
  2. UDP提供尽最大努力的交付,不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,因此所有维护传输可靠性的工作需要用户在应用层来完成。
  3. UDP是面向报文的。报文不可分割,是UDP数据报处理的最小单位
    发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,既不合并,也不拆分,而是保留这些报文的边界;接收方UDP对IP层交上来UDP用户数据包,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文。

3. TCP和UDP有什么区别

  1. 是否需要建立连接,TCP需要建立点到点的连接,UDP不需要建立连接(没有建立连接的时延)。
  2. 有没有连接状态。TCP是面向连接的传输层协议,UDP是无连接状态。
  3. 是否可靠。TCP是可靠的(确保数据无差错、不丢失、不重复且有序),UDP是不可靠的(有可能会出现数据丢失和乱序,因此可靠性工作要交给应用层来进行。)
  4. 首部开销。TCP是20字节,UDP是8字节(比TCP小)。
  5. 面向字节流还是报文。TCP是面向字节流的(把应用程序交下来的数据看成仅仅是一连串的无结构的字节流),UDP是面向报文的(报文是UDP数据报处理的最小单位)。
  6. 传输速率。TCP传输速率慢而且还会有较大的时延(因为要建立连接还要保证可靠传输,中途可能会出现重传),UDP传输速率快而且时延小(因为不用建立连接,而且直接传输报文,也不用处理数据丢失、乱序)。
  7. 吞吐量是否受算法控制。TCP的吞吐量受到流量控制和拥塞控制,UDP的吞吐量不受拥塞算法控制(因为它没有拥塞控制,所以网络中的拥塞不会影响主机传输速率)。

4. http

万维网(WWW)的内核部分由三个标准构成:统一资源定位符(URI)、超文本传输协议(HTTP)、超文本标记语言(HTML)。

(1)http

  • 应用层协议。是面向事务的,规定了在浏览器和服务器之间的请求和响应的格式和规则,是万维网上能够可靠地交换文件的重要基础。
  • 使用TCP连接进行可靠的传输。
  • 是无状态的。同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。通常使用Cookie加数据库的方式来跟踪用户的活动。
  • 本身是无连接的,虽然使用了TCP连接,但通信双方在交换HTTP报文之前不需要先建立HTTP连接。
  • 既可使用非持久连接,也可以使用持久连接(HTTP/1.1支持)。
  • 传输的数据是明文的,未加密的。
① 非持久连接和持久连接

非持久连接(又叫短连接),每一个网页元素对象的传输都需要单独建立一个TCP连接。(第三次握手的报文段捎带了客户对万维网文档的请求。)请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT(1个RTT用于TCP连接,另一个RTT用于请求和接收文档)。

持久连接(又叫长连接),万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。

持久连接分为两种方式:
(1)非流水线。客户在收到前一个响应后才能发出下一个请求。
(2)流水线(HTTP/1.1默认模式)。客户每遇到一个对象引用就立即发出一个请求,因而客户可以一个接一个地连续发出对各个引用对象的请求。
如果所有的请求和响应都是连续发送的,那么所有引用到的对象共计经历1个RTT延迟,而不是像非流水线版本那样,每个饮用都必须有1个RTT延迟。

② 什么时候用长连接、短连接
  • 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,下次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

  • 像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

③ http/1.0和http/1.1

HTTP 1.1与HTTP 1.0的比较里面解释得很详细

  1. 可扩展性。
  2. 缓存。
  3. 带宽优化。
  4. 长连接。
  5. 消息传递。
  6. Host头域。
  7. 错误提示。
  8. 内容协商。
④ http/2.0

HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议(是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验)。

⑤ http/2.0和http/1.1的区别
  • http/2.0采用二进制格式而非文本格式
  • http/2.0是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
  • 使用报头压缩,http/2.0降低了开销
  • http/2.0让服务器可以将响应主动“推送”到客户端缓存中
⑥ http/2.0比http/1.1的优势
  • 相同的Host占用一个TCP链接
  • 请求可以设置优先级
  • 采用二进制协议,而不是之前的文本协议
  • 多路复用
  • 头部压缩

(3)过程

每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立连接。TCP连接建立后,浏览器就向服务器发送请求获取某一Web页面的http请求。服务器收到http请求后,将构建锁清秋的Web页必须的信息,并通过http响应返回给浏览器。浏览器再将信息进行解析,然后将Web页显示给用户。最后,TCP连接释放。

(4)https

  • 是以安全为目标的HTTP通道,HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
  • 主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

和http的区别:

  1. https协议需要到ca(Certificate Authority)申请证书,一般免费证书较少,因而需要一定费用。
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

(5)HTTP协议与TCP/IP协议的关系

HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在网络层使用IP协议,主要解决网络路由和寻址问题;在传输层使用TCP协议,主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致,具有可靠、面向连接的特点。


5. IPv6的特点

  • 更大的地址空间,IPv6将地址扩大到128位,IPv4的地址是32位。IPv6的字节数是16字节,IPv4的字节数是4字节。
  • 扩展的地址层次结构。
  • 灵活的首部格式。
  • 改进的选项。
  • 允许协议继续扩充。
  • 支持即插即用(即自动配置)。
  • 支持资源的预分配。
  • IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般的意义来讲,IPv6不允许分片(不允许类似IPv4在路由分片)。
  • IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
  • 增加了安全性。身份验证和保密功能是IPv6的关键特征。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值