系统学习----网络基础知识

网络基础知识

OSI七层模型

应用层: 网络服务与最终用户的一个接口
协议: http ftp dns等等

表示层:数据的标识、加密、压缩等等
格式:JPEC ASCII 加密格式等等

会话层:建立、管理、终止会话
对应主机进程、指本地主机与远程管理正在进行的会话

传输层: 定义传输局的协议端口、流量控制和差错校验等等
协议: TCP UDP协议

网络层:进行逻辑寻址(IP地址,在不同网络之间的路径选择
协议: ICMP arp rap

数据链路层:建立逻辑连接,进行硬件地址寻址,差错校验等等
将比特流组成字节进行合并为帧,用MAC地址进行访问

物理层:建立、维护、断开物理连接
比特流

物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人。

数据链路层: 决定访问网络介质的方式。

在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于邮局中的装拆箱工人。

网络层: 使用权数据路由经过大型网络 相当于邮局中的排序工人。

传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员。

会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书。

表示层: 协商数据交换格式 相当公司中简报老板、替老板写信的助理。

应用层: 用户的应用程序和网络之间的接口老板。

OSI七层模型


TCP/IP模型(4层:应用层/传输层/网络连接层/物理层)

TCP服务和UDP服务之间区别

TCP面向可靠连接; UDP非面向连接
TCP是以数据流形式传输; UDP是以数据段进行传输

TCP如何保证可靠传输

  • TCP分段: 应用数据分割成合适的TCP端发送(对于UDP来说,应用程序产生的数据端长度保持不变传输)

  • 超时重传: 每发出一个TCP端都会自动启动一个"重传定时器";如果不能够及时收到一个确认包,将重传这个报文段

  • 流量控制: 缓存区固定大小,TCP接收端只允许另一端发送接收缓存区所能接纳的数据

  • 数据校验: TCP首部(校验位);如果收到的校验和有差错,会选择丢去或不确认

  • 处理IP数据包:
    a) 丢弃重复的IP数据包
    b) 会将失序的IP数据包重新排序之后交由给应用层

      封装: 数据包从应用层到物理层 依次添加:tcp首部 ip首部 mac首部 
      解封装:数据包从物理层到应用 依次移除首部信息
    

TCP首部格式

在这里插入图片描述

- 端口: IP首部中的IP地址 + TCP首部中的Port端口唯一确定一个TCP连接
- 序号: 用来标识数据字节流 序号:2^32  当序号用完后会重新从0开始
- 确认号: 发送确认的一端所期待收到的下一个序号
- 数据偏移量:TCP报文段的数据起始处到TCP数据部分其实距离(4bytes);占用4bit

所以TCP首部最大长度为 60bytes(2^4 - 1)*4(选项拥有40bytes)最小长度为:20bytes(TCP固定长度)

标识这是怎么样一个TCP包
URG:紧急指针有效(会立刻处理)
ACK:确认序列号有效
PSH:接收方尽快将这个报文段交由给应用层
RST:重建连接(如果收到RST包说明发生错误会立刻断开当前tcp连接)
SYN:同步序列号用来发起连接
FIN:发送端完成发送任务后,断开连接

TCP三次握手和四次挥手(TCP建立和断开过程)

三次握手:

A作为客户端 B作为服务端

A -> B :发送建立连接的请求(SYN包: seq ack win mss + 有限状态机的变化 )
B -> A :响应确认请求连接(ACK包)并发送连接请求(SYN包) =》 结合成1次
A -> B : 响应确认 (ACK包)

三次握手第2步中将SYN和ACK包合并成一个包发送的目的是:减少连接建立交互过程,从而提高建立连接效率。

两次握手?? 不可以 两次握手无法保证安全可靠连接。
A -> B : 发送SYN包;可能发生故障
B -> A : 发送ACK包,可以与A建立连接了,事实上:能够建立吗?不能,这个没有完成的不可靠连接一直在占用

TCP有限状态机变化
在这里插入图片描述

Listen状态
SYN_SENT状态
SYN_RECV状态
ESTABLISHED状态:已经建立连接
FIN_WAIT1状态
FIN_WAIT2状态
CLOSING状态
CLOSING_WAIT状态
LAST_ACK状态
TIME-WAIT状态
CLOSED状态
发布了49 篇原创文章 · 获赞 6 · 访问量 3687

猜你喜欢

转载自blog.csdn.net/weixin_46097280/article/details/104389938