计算机网络基础
计算机网络
最常见的网络分层模型
OSI七层模型
国际标准化组织提出的网络分层模型
- 应用层: 为计算机用户提供服务
- 表示层: 数据处理
- 会话层: 管理应用程序之间的会话
- 传输层: 为两台主机之间的通信提供通用的数据传输服务
- 网络层: 路由和寻址
- 数据链路层: 帧编码和误差纠正控制
- 物理层: 原始比特流
理论与实践之间的差距,最后让这个分层显得不是很完美,tcp/ip的大受欢迎

TCP/IP四层模型
广泛使用的一种模型,对osi的模型进行一定程度上的精简,分层和对应关系如下:
- 应用层: 对应会话层、表示层、应用层
- 传输层: 对应传输层
- 网络层: 对应网络层
- 网络接口层: 对应数据链路层、物理层
应用层
- 位于传输层之上,是应用之间传输数据的服务,定义了信息交换的格式,并将消息交给下层的传输层来传输
- 应用层有许多不同的协议,用于指定不同的传输规范,常见的有: htt、ssh、smtp
传输层
- 接受应用层的消息,并负责两台终端之间的消息传输
- 主要有两种协议:
- tcp: 提供面向连接的,可靠的数据传输服务
- udp: 提供无连接的,不保证数据传输的可靠性
网络层
负责把传输层数据进行分组,并通过网络的路由器找到对应的主机
常见协议:
- ip: 网络层最重要的协议之一,IP协议的作用包括寻址规约、定义数据包的格式等等,是网络层信息传输的主力协议。目前IP协议主要分为两种,一种是过去的IPv4,另一种是较新的IPv6,目前这两种协议都在使用,但后者已经被提议来取代前者。
- arp: ARP协议,全称地址解析协议(Address Resolution Protocol),它解决的是网络层地址和链路层地址之间的转换问题。
网络接口层
这层是数据链路层和物理层的合体
数据链路层的作用: 将网络层传输的ip数据组装成帧,在两个相邻节点上的链路上传送帧。每一帧都包含数据和必要的控制信息
物理层的作用: 实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异
TCP与UDP
TCP与的UDP区别
| TCP | UDP | |
|---|---|---|
| 是否面向链接 | 是 | 否 |
| 是否有状态 | 是 | 否 |
| 是否可靠 | 是 | 否 |
| 首部长度 | 20-60bytes | 8bytes |
| 传输效率较慢 | 较快 | |
| 是否提供广播或多播 | 否 | 是 |
http是基于什么
http3.0之前是基于tcp协议,但是,3.0之后,就是基于UDP的QUIC协议。这个变换是为了解决http/2中存在的头部阻塞问题
使用tcp的协议有哪些?
- http2.0
- https
- ftp
- smtp
- ssh
- telnet
使用UDP的协议有哪些
- dhcp
- dns
TCP的三次握手和四次挥手
建立链接-三次握手
- 一次握手: 客户端发送带有syn(seq=x)标志的数据包给服务器,客户端进入
SYC_SEND状态,等待服务端确认 - 二次握手: 服务端发送带有syn+ack(seq=x,ack=x+1)标志的数据包给客户端,服务端进入
SYN_RECV状态 - 三次握手: 客户端发送带有ack(ack=y+1)标志的数据包给服务端,客户端和服务端进入
ESTABLISHED状态,完成三次握手。之后就可以正常传输数据了。
为什么要三次握手
最终原因就是了保证发送方与接收方是正常的
- 一次握手: 服务端确认了对方是正常的
- 二次握手: 客户端确认自己了发送、接受正常,服务端发送、接受正常。服务端确认了对方发送正常,自己接受正常
- 三次握手: 客户端确认自己了发送、接受正常,服务端发送、接受正常。服务端确认了自己发送、接受正常,对方也发送、接受正常
断开链接-四次挥手
- 第一次挥手: 客户端发送fin(seq=x)标志给服务端,用来关闭客户端到服务端的数据传输。客户端进入
fin-wait-1状态 - 第二次挥手: 服务端收到客户端fin(seq=x)标志并发送**ack(seq=x+1)**给客户端。服务端进入
close-wait状态,客户端进入fin-wait-2状态 - 第三次挥手: 服务端关闭与客户的链接,并发送一fin(seq=y)标志的数据包。客户端请求关闭链接,然后,服务端进入
last-ack状态 - 第四次挥手: 客户端发送ack(seq=y+1)标志的数据包,服务器收到ack(seq=y+1)标志的数据包进入
close状态。此时,客户端带动2msl之后没有收到回复,就证明服务端关闭,客户端也关闭链接
2msl
- msl: 一个片段在网络中最大的存活时间。2msl就是一个发送和一个回复所需的最大时间。
- 服务器如果没有收到ack,就会重新发送fin,然后在等待2msl,之后双方都确认,才会关闭链接
为什么要四次挥手
TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。
TCP如何保证传输的可靠性
- 基于数据块传输
- 对失序数据包重新排序以及去重
- 校验和
- 超时重传
- 流量控制
- 拥塞控制
HTTP
HTTP: 超文本传输协议。无状态协议
优点
跨平台、速度快,扩展性强
常见的HTTP状态码
- 1xx: 信息性状态码,接收的请求正在处理
- 2xx: 成功状态码,请求正常处理完成
- 3xx: 重定向状态码
- 4xx: 客户端错误状态码
- 5xx: 服务端错误状态码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我做梦的博客!
评论
