通常都要知道的TCP、HTTP知识点

来源:juejin.im/post/5ad4094e6fb9a028d7011069
TCP要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性 。但是,http是基于tcp协议的 。
TCP/IP 协议分层模型
  • 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换
  • 链路层代表驱动
  • 网络层
    • 使用 IP 协议,IP 协议基于 IP 转发分包数据
    • IP 协议是个不可靠协议,不会重发
    • IP 协议发送失败会使用ICMP 协议通知失败
    • ARP 解析 IP 中的 mac 地址,MAC 地址由网卡出厂提供
    • IP 还隐含链路层的功能,不管双方底层的链路层是啥,都能通信
  • 传输层
    • TCP 协议面向有连接,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少7次的发包收包,资源浪费
    • UDP 面向无连接,不管对方有没有收到,如果要得到通知,需要通过应用层
    • 通用的 TCP 和 UDP 协议
  • 会话层以上分层
    • TCP/IP 分层中,会话层,表示层,应用层集中在一起
    • 网络管理通过 SNMP 协议
 划重点了啊(面试最常问的啊)TCP三次握手和四次挥手?被问烂了的问题了,这里不详细讲了,
 
三次握手:
  • 客户端–发送带有SYN标志的数据包–一次握手–服务端
  • 服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端
  • 客户端–发送带有带有ACK标志的数据包–三次握手–服务端
 
四次挥手:
  • 客户端-发送一个FIN,用来关闭客户端到服务器的数据传送
  • 服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号
  • 服务器-关闭与客户端的连接,发送一个FIN给客户端
  • 客户端-发回ACK报文确认,并将确认序号设置为收到序号加1
 
还不懂的童鞋,去找别人的文章好好看看!
TCP和UDP的区别?仔细阅读上面传输层里写的内容,懂了吗?(不懂?不懂背下来啊,混蛋!)
我们微信聊天时候经常会有这种情况 。
通常都要知道的TCP、HTTP知识点

文章插图
 
是不是感同身受,这种情况就是对方用了TCP协议来聊天,要经过--在吗?--在--巴拉巴拉,才能成功的传递信息 。而如果对方使用UDP,则会有事直接说,不管我收没收到 。(以后找我请用UDP协议,着急直接打电话!)
HTTPHttp协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求 。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的 。所以Http连接是一种短连接,是一种无状态的连接 。
 
所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接 。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态 。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接 。
http传输流 
通常都要知道的TCP、HTTP知识点

文章插图
 
发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部
 
又来划重点了啊HTTP的英文全称?开玩笑的,这个显然不是重点,但是不排除有人会去问,还是要知道的:超文本传输协议(HyperText Transfer Protocol)
状态码?状态码就那些,常用的记住就行了:
 
2XX 成功
  • 200 OK,表示从客户端发来的请求在服务器端被正确处理
  • 204 No content,表示请求成功,但响应报文不含实体的主体部分
  • 206 Partial Content,进行范围请求
 
3XX 重定向
  • 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
  • 302 found,临时性重定向,表示资源临时被分配了新的 URL
  • 303 see other,表示资源存在着另一个 URL,应使用 GET 方法定向获取资源
  • 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
  • 307 temporary redirect,临时重定向,和302含义相同
 
4XX 客户端错误