目录
TCP/IP协议群简介(互联网协议群)(Internet Protocol Suite)
应用层(Application)(合并简化了展示层,会话层)
传输层(Transport)
网络层(Internet)
链接层(Link)
物理层(Pysical)
TCP/IP封包
完整的TCP协议头
TCP协议封包(传输层协议)
建立TCP/IP连接为什么需要三次握手?
传输和处理数据顺序
确定一个消息的顺序:绝对时间
TCP/IP协议的处理方法
挥手(中断连接)
TCP的结束(场景)
总结与思考
TCP/IP协议群简介(互联网协议群)(Internet Protocol Suite)
类似OSI模型,一种网络协议的概念模型。
应用层(Application)(合并简化了展示层,会话层)
提供应用间通信能力
传输层(Transport)
提供主机到主机(host-to-host)的通信能力
网络层(Internet)
提供地址到地址的通信能力
链接层(Link)
提供设备到设备的通信能力
物理层(Pysical)
TCP/IP封包
完整的TCP协议头
TCP协议封包(传输层协议)
- 每个封包称作一个TCP信息段(TCP Segment)
- Header用于描述传输行为(如源端口,目标端口等)
- Header后面跟若干个byte数据,每个byte拥有自己的序列号
建立TCP/IP连接为什么需要三次握手?
客户端SYN_SEND【通过connect()】——请求同步SYN——》服务端【listen()】收到,状态变为SYN-RECEIVED
——我确认收到你的同步请求SYN-ACK——》客户端收到状态变为ESTABLISHED(客户端处于连接状态)——确认——》服务端收到ESTABLISHED(服务端处于连接状态)【然后开始交换数据】
具体步骤如下图:
努力保证数据的可靠
传输和处理数据顺序
确定一个消息的顺序:绝对时间
使用发送、接收时间
- 服务器时间差异如何解决?
使用自增序号
- A-B-A-B类型会话可以解决?
- A-(AB)-B类型会话如何解决?
TCP/IP协议的处理方法
消息的绝对顺序用(SEQ,ACK)这一对元组描述(不变量)
SEQ(Sequence):这个消息发送前一共发送了多少字节
ACK(Acknowledge):这个消息发送前一共收到了多少个字节
挥手(中断连接)
TCP的结束(场景)
可靠性
TCP的四次挥手
发起者close()【FIN_WAIT1】——FIN——>接收者CLOSE_WAIT【先处理自己的响应】LAST_ACK——ACK~FIN——》发起者【FIN_WAIT_2】【TIME_WAIT】——ACK——>CLOSED&&CLOSED
一个人说就聊到这,然后2个人把正在发和回复的消息处理完,都对对方说了就聊到这。然后连接就断了。
总结与思考
- 最简化原则:没有足够的事情要做,就不必分层
- 思考计算机对话和人对话的区别?为什么需要三次握手?
人对话是有上下文context的,计算机之间没有那么多上下文
- 网络中的顺序问题,TCP协议给了完美的解法,这个方法是可以迁移的。(学算法的价值)
不变量(SEQ,ACK)