Linux网络编程-1.网络基础

1. 网络基础

1.1 网络应用程序设计模式

C/S - Client/Server模式

  • 优点:1.协议选用灵活 2.可以缓存数据
  • 缺点:1.对用户安全构成威胁 2.开发工作量大,调试困难

B/S - Browser/Server模式

  • 优点跨平台
  • 只能使用http

1.2 网络模型

7层模型-OSI:

  • 物理层–双绞线、光纤
  • 数据链路层–数据的传输和错误检测
  • 网络层–为数据包选择路由
  • 传输层–提供端对端(TCP/UDP)
  • 会话层–解除或建立与别的节点的联系
  • 表示层–数据格式化、代码转换、数据加密
  • 应用层–文件传输、电子邮件、文件服务、虚拟终端

四层模型-TCP/IP

  • 网络接口层(数据链路层)-以太网帧协议、ARP协议
  • 网络层-IP协议
  • 传输层-TCP/UDP协议
  • 应用层-FTP/HTTP/SSH/telent协议
    在这里插入图片描述

1.3 IP数据报

4位版本:ipv4、ipv6
8位生存时间(TTL):最多能进过多少跳
32位源IP地址:数据发送端地址
32为目的IP地址:数据接受端地址
IP数据报格式

1.4 UDP数据报

16位源端口
16位目的端口:
在这里插入图片描述

1.5 TCP数据报

  • 16位源端口
  • 16位目的端口
  • 32位序号
  • 32位确认序号
  • 6个标志位
  • 16位滑动窗口

在这里插入图片描述

1.6 数据的发送和接收

TCP/TP数据包封装数据的发送和接收

1.7 TCP/UDP协议

1.7.1 TCP协议

TCP:面向链接的安全的流式传输协议
在这里插入图片描述

  • mss:最大数据长度
  • 连接的时候,进行三次握手
  • 数据发送的时候,会进行数据确认
    – 数据丢失后,会进行数据重传
1.7.1.1 三次握手建立连接
  • 标志位:
    • SYN:请求建立连接
    • ACK:应答
  • 三次握手:
    • 第一次握手:
      • 客户端
        – 携带标志位:SYN
        – 随机产生32位序号,可以携带数据
      • 服务器
        – 检测SYN值是否为1
    • 第二次握手
      • 服务器
        • ACK标志位+确认序号
          – 客户端随机序号+1
        • 发起一个连接请求
          – SYN+32位随机序号
      • 客户端
        – 检测标志位:1
        – 校验:确认序号是否正确
    • 第三次握手
      • 客户端
        • 发送确认数据包
          – ACK+确认序号(服务器的随机需要+1)
      • 服务器
        • 检测:ACK是否位1
        • 校验:确认序号是否正确
1.7.1.2 四次挥手断开连接

哪一端主动断开连接都可以

  • 标志位:
    • FIN:请求断开连接
      – 编号:对方最后一次发送ACK的时候携带的确认序号

第一次挥手:

  • 客户端
    • 发送断开连接的请求
      – FIN+序号
      – ACK+序号
  • 服务器
    • 校验:FIN是否为1

第二次挥手:

  • 服务器
    • 确认:ACK+序号
1.7.1.3 TCP 状态转换

在这里插入图片描述

1.7.2 UDP协议

UDP:面向无连接的不安全的报式传输

  • 连接的时候不会握手
  • 数据发送出去之后就不管了
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT灰猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值