TCP/IP协议和互联网协议群
TCP/IP协议群/互联网协议群(Internet Protocol Suite)
类似OSI模型,一种网络协议的概念模型
作用 |
封包 | |
应用层(Application) |
OSI的应用层、表示层、会话层 抽象用户的数据,提供顶层的API 提供应用间的通信能力 HTTP 协议 |
数据 (程序员自己定义的格式) |
传输层(Transport) |
点到点的传输,端口号 端口号 对应的是应用,源port,目标port,eg:80-http协议 提供主机到主机(host to host)的通信能力 TCP/UDP 协议 |
TCP Header + TCP数据 (数据转换) |
网络层(Internet) |
像物流公司一样,将你的分包从一个IP地址送到另一个IP地址 IP地址指位置编号,源IP,目标IP 提供地址到地址的通信能力 IP 协议 |
IP Header + IP数据 (传输层的数据到了网络层,会被切成更小的片段) IP封包:源IP地址 | 目标IP地址 | 协议 |···| 数据(源端口 | 目标端口 | ··· |数据) ---TCP封包 |
链接层(Link) |
提供设备到设备之间的通信能力,Mac地址 Mac地址指设备编号,源Mac,目标Mac 多种底层网络协议Etherner,Wi-Fi,··· |
Frame Header + Frame Data + Frame Footer (二进制) |
物理层(Pysical) | 光电信号的传输 |
完成的TCP协议头
源端口(source port) | 目标端口(destination port) | ||
序号(sequence number) | |||
确认序号(acknowledgedgement number) | |||
Data Offset | Reserved | 标识位 | 窗口大小(window size) |
检验和(Checksum) | 紧急指针(Urgent Pointer) | ||
可选项 |
TCP协议封包
· 每个封包称作以恶搞TCP信息段(TCP Segment)
· Header 用于描述传输行为(如源端口,目标端口等)
· Header 后面跟若干个byte数据,每个byte拥有自己的序列号
三次握手
建立连接为什么需要3次握手?
异常情况、
数据顺序问题?
传输和处理数据顺序
确定消息的顺序:绝对时间 ?
使用发送、接收时间 - 服务器时间差异如何解决?
使用自增序号?- · a-b-a-b类型会话可以解决?· a-(ab)-b类型会话如何解决?
TCP/IP 协议处理方法?
消息的绝对顺序用(SEQ、ACK)这一对元组描述
- SEQ(Sequence):这个消息发送前一共发送了多少字节
- ACK(Acknowledge):这个消息发送前一共收到了多少个字节
挥手(终端连接)
四次挥手
思考?
· 最简化原则:没有足够的事情要做,就不必分层
· 及其对话、人对话