网络参考模型
常见协议标准化组织
OSI 开放式系统互连模型
TCP/IP协议
应用层
TCP 端口号
UDP端口号
端口号 用于应用层的协议的区分,表示上层协议(主要用与解封装的时候)
端口号范围 0-65535 共 65536个 0 不使用
公认端口 0-1023
注册端口 1024-49151 (商业用途 企业使用)
随机端口 49152 -65535 (不固定,动态分配 )
为啥文件传输协议 ftp 20 21 两个端口 因为是双通道 参考全双工
源:随机端口号 目的端口号就是想防问的
采用C/S结构
用于文件下载和 上传
C 是 客户端 S是服务器
双通道协议
控制连接 tcp 21号端口
数据连接 ;文件传输 tcp 20号 端口
传输层
传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。
TCP 传输控制协议
Tcp的协议号是 6协议号
就是区分 用得tcp还是udp可靠传输 可能会丢包但是 最终是可靠的
UDP 用户数据协议
UDP的协议号是 17
TCP报文
TCP头部括号里的 一定会带 tcp头部20-60个字节
源端口作用:表示那个应用层需发送的 16bit大小 目的端口:标识那个应用程序接受的 大小16bit
Seq :序列号 本报文段发送数据的第一个字节的序号 大小32bit
Ack ; 确认序列号 确认上一个报文即 seq+1大小32bit
Header length 头部多大
保留:没有实际含义 全部为六个二进制的 0
控制位:代表不同状态tcp的内容(seq 请求 ack 回复 fin 拒绝 )用来干嘛的
Windows 窗口tcp的流量控制 当前接收端 最大数据总数 窗口最大 65535字节 长度16比特
Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部。长度为16比特。也就是 检验数据得完整性
TCP是如何把保证可靠的
- 三次握手 建立连接(建立一个通信通道)
- 丢包重传
- 滑动窗口
- 四次挥手 断开连接:
面向连接: 反馈 重传机制
客户端发的消息 SYN消息:请求与对端建立连接 seq :序列号(类似快递单号吧)占32位32bit
服务器回复的消息 ACK消息:确认消息 ack号:确认号
确认消息=序列号+1
协议数据单元 Protocol Data Unit, 简称(PDU)
最大传输单元 Maximum Transmission Unit 简称(MTU)