计算机网络基础内容整理


前言

这里主要记录的是自己关于网络方面的学习总结,参考了javaguide、cs-notes和图解http的内容


一、OSI七层模型

网络相关的内容首先就是关于OSI七层模型
主要包括:

  1. 应用层 ——计算机应用服务
  2. 表示层 —— 数据处理
  3. 会话层 —— 管理应用程序之间的会话
  4. 传输层 —— 为进程通信提供通用数据服务
  5. 网络层 —— 路由和寻址
  6. 数据链路层 —— 管理相邻节点的数据通信
  7. 物理层 —— 利用传输介质为数据链路层提供数据支持
    七层结构相对来讲是很清晰的,但实现起来相对复杂,周期过长,所以目前常用的模型是TCP/IP四层模型

二、TCP/IP四层模型

TCP/IP四层模型是目前应用最广泛的模型,主要包括:

  1. 应用层
  2. 传输层
  3. 网络层
  4. 网络接口层

应用层(Application Layer)

主要为两个终端的应用程序(进程)之间的信息交互提供服务,定义了信息交互的格式,并交给传输层进行下一步处理,而不用关心传输层具体操作
应用层常见协议:

  • HTTP/HTTPS —— 最常见的超文本传输协议(80、443)
  • DHCP —— 路由器分配ip地址(67、68)
  • FTP —— 基于tcp的文件传输协议(20/数据连接、21/控制连接)
  • SSH —— 为远程登录会话提供的安全协议(20、21)
  • SMTP —— 邮件发送协议,发送ascii码(25)
  • DNS —— 域名解析(53/udp或tcp,默认udp长度超过512字节时使用tcp)

传输层(Transport Layer)

负责为两个终端进程间通信提供通用的数据传输服务
通用是指不管是http还是smtp都是用tcp

  • 是进程间的逻辑通信(看起来像是有一条端到端的逻辑通信信道)

udp

用户数据报协议

  • 无连接
  • 尽最大可能交付
  • 没有拥塞控制
  • 面向报文
    对于用户应用层下发的报文不进行合并和拆分,只是添加udp首部
    支持一对一、一对多、多对一、多对多的通信

udp首部格式

首部只有8个字节:

  1. 源端口
  2. 目的端口
  3. 长度
  4. 校验和
    cs-notes图
    伪首部的12个字节是为了计算检验和临时加的

tcp

传输控制协议

  • 面向连接
  • 提供可靠交互
  • 有流量控制
  • 提供全双工通信
  • 面向字节流(把应用层报文看作字节流,把字节流重新组织成大小不等的数据块)
  • 点对点连接

tcp首部格式

主要包括:

  1. 序号 seq: 对字符流进行编号,表示第一个字节编号,如果编号为301,则表示第一个字符编号为301,若数据长度为100,下一个报文段序号为401
  2. 确认号: 希望收到的下一个报文段的序号。若B受到A序号为501,长度为200字节的报文段,则B返回给A的确认报文段中确认号为701,及B期望下一个报文段的序号为701
  3. 数据偏移: 数据部分距离报文起始位置的偏移量,实际上就是首部的长度
  4. 确认 ack: ack = 1时确认号有效,否则会忽略确认号。tcp建立连接之后传输的所有报文段ack必须置1
  5. 同步 syn: 建立连接时用来同步的序号。syn = 1, ack = 0 表示连接请求报文段,若服务器同意建立连接,则响应syn = 1, ack = 1
  6. 终止 fin: 用来释放一个连接,当fin = 1,表示报文段的发送方数据发送完毕,并要求释放连接
  7. 窗口: 接收方让发送方设置发送窗口的依据,因为接收方数据缓存空间有限
    cs-notes图

tcp三次握手

为了将数据准确无误的传输给接收方,tcp协议采用三次握手策略
具体握手步骤:

  1. 服务器端B处于LISTEN(监听)状态,等待客户端的连接请求
  2. 客户端A向B发送请求连接的报文,syn = 1,ack = 0,选择初始序号x
  3. B接收到连接请求报文,若同意连接,则向A发送请求确认报文,syn = 1,ack = 1,确认号seq = x + 1,同时选择一个初始序号y
  4. A收到B的连接确认报文后,还要向B发出确认,seq = y + 1,序号x + 1
  5. B收到A的确认后,连接建立

若握手过程中某个阶段莫名中断,TCP协议会再次以相同顺序发送相同数据包
图解http

为什么要三次握手

三次握手的目的是建立可靠通信,确认双方的发送和接收功能是否正常

  1. 第一次握手: client什么都不能确认;Server确认对方发送正常,自己接收正常
  2. 第二次握手:Client确认自己发送、接收正常,对方发送、接收正常;Server确认对方发送正常,自己接收正常
  3. 第三次握手:Client确认自己发送、接收正常,对方发送、接收正常;Server确认自己发送、接收正常,对方发送接收正常
    共计3次握手,确认双方的发送接收都正常

第三次握手是为了什么

第三次握手是为了防止失效的连接请求到达服务器,导致服务器错误打开连接
如果客户端发送的请求在网络中滞留,就需

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值