互联网协议群(TCPIP协议群)
类似osi模型,是一种网络协议的概念模型。 是如今应用最广泛的模型。它对ois进行了简化,把osi的应用层,会话层和表现层简化为了应用层。
这样更符合做架构的习惯。所以总共有5层。
应用层,传输层,网络层,链接层,物理层。
应用层
提供应用间通信能力。
应用层是对顶层api的一个抽象。比如http协议。
传输层
提供主机到主机的通信能力,比如TCP、UDP协议
比如他们要求主机带一个端口号,这个端口号就代表应用。浏览器常用的是80端口,代表是web服务。
网络层
提供地址到地址的通信能力
比如ip协议。数据从一个ip地址到另一个ip地址,中间会有很多网络设备,通过ip协议进行规范传输。
链接层
提供的是设备到设备的通信能力
在一个局域网内,不同的设备会有不同的标识号,这个标识号不是ip地址,而是mac地址。
TCP/IP封包
最上层是应用层,应用层的数据是我们程序员自己定义的数据。
展开全文
当我们的这组数据要传输的时候(从客户端到服务器),通常会转换成传输层的数据格式。比如TCP Header 和TCP 数据这样的格式。TCP Header 包含了传输的原端口号和目标端口号一类的数据。
在传输过程中,在网络传输中又会转化成网络层的数据格式,比如会添加ip Header和ip数据,这个头部会增加原地址和目标地址。传输层的数据在网络层会被切成更小的片段。
在链接层会增加一个头部和尾部,因为数据到了链接层都会转换为二进制的数据,用头部去区分不同的块的数据。
TCP协议的三次握手
1.第一次握手:客户端发送请求建立连接,请求报文段。
2.第二次握手:服务器收到请求,发送同意并请求与客户端建立连接。
3.第三次握手:客户端收到请求,发送同意与服务器建立连接。
为什么要进行三次握手?一句话就是,防止服务器端的一直等待而浪费资源
解决传输顺序问题
首页要确定消息的顺序。不能使用时间,因为服务器之间真实时间不可得,而且服务器之间不能保证没有时差。
消息的绝对顺序用SEQ,和ACK 这一对元组表示。
SEQ;这个消息发送前一共发送了多少字节
ACK:这个消息发送前一共收到了多少字节
TCP协议的四次分手
1.第一次分手:客户端发送断开请求
2.第二次分手:服务器收到断开请求,发送同意断开连接的请求
3.第三次分手:服务器发送请求断开连接
4.第四次分手:客户端收到,发送同意断开连接
我们可以类比我们请假下班的情况。
员工:有点事儿,我要请假下班(第一次分手)
老板:收到,同意(第二次分手)
员工:打下班卡(第三次分手)
老板:确认打卡,记录同意。(第四次分手)