首页 > 其他分享 >计算机网络基础(一)

计算机网络基础(一)

时间:2024-07-09 20:28:12浏览次数:12  
标签:发送 seq ACK 基础 TCP 计算机网络 FIN 客户端

一、OSI 七层模型

  • 应用层:服务应用程序
    • 文件传输、电子邮件、远程登陆
    • HTTP、FTP、SMTP、DNS、TELNET、SNMP
  • 表示层:数据格式转化、加密
    • JPEG、MPEG
  • 会话层:建立、管理、维护会话
    • NetBIOS
  • 传输层:建立、管理、维护端到端连接
    • 数据传输控制、流量控制
    • TCP、UDP、SCTP
  • 网络层:IP选址、路由选择
    • IP、网关协议(ARP)、路由协议(RIP、OSPF、BGP)
  • 数据链路层:提供介质访问、链路管理
    • 分帧、差错校验
    • PPP、HDLC、以太网协议
  • 物理层:物理设备连接

二、TCP / IP模型

  • 应用层 = 应用层 + 表示层 + 会话层
  • 传输层
  • 网络层
    • ICMP
  • 网络接口层 = 数据链路层 + 物理层
    • WIFI协议、

TCP粘包、拆包

  • TCP面向流,发送方可能有小数据包粘在一起发送(接收方无法区分不同包的界限);接收方可能拆成小包接收(缓存区大小限制)
  • 导致接受错误、数据粘连
  • 解决方案
    • 包长固定:512字节,不足则空格补全
    • 包末尾分隔符
    • 仿照TCP / IP,head + body,head里有整个信息的长度
    • 自定义协议

TCP如何保证可靠传输

  • 校验和
    • 首部和数据的校验和,不对则丢弃且不确认收到
  • 三次握手、四次挥手
    • 可靠传输
  • 流量控制
    • 接收端只允许发送端发送缓冲区能接纳的数据,接收方来不及处理则提示发送方降低速度,防止包丢失(可变大小的滑动窗口协议)
  • 拥塞控制
    • 慢启动、拥塞避免、快速重传
  • ARQ协议
    • 每发完一个分组就停,等待确认,收到确认再继续发
  • 超时重传
    • 定时器,时间内未收到确认报文,重发一遍

三、ARP vs RARP

  • ARP
    • IP to MAC
    • 通信时查目标机器的物理地址
    • 广播
  • RARP
    • MAC to IP
    • 启动时像网络中发送请求获取自己的IP地址
    • 向预定义的RARP服务器请求

四、路由器 vs 交换机

  • 交换机
    • 数据链路层
    • 转发MAC地址
    • 组件局域网
  • 路由器
    • 网络层
    • 转发IP地址
    • 局域网互连,接入互联网

五、TCP三次握手、四次挥手

  • 三次握手
    • 客户端:CLOSED to SYN - SENT to ESTABLISHED
    • 接收方(服务器):CLOSED to LISTEN to SYN - RCVD to ESTABLISHED
    • 第一次握手:客户端发送包,服务端收到,验证了客户端的发送能力
      • SYN = 1,seq = x
      • 表示想跟接收端通信,告知对方
    • 第二次握手:服务端发送包,客户端收到,验证了服务端的发送、接收能力
      • SYN = 1,ACK = 1,seq = y,ack = x + 1
      • 表示收到客户端的消息,可以进行通信
    • 第三次握手:客户端发送包,服务端收到,验证了客户端的接收能力
      • ACK = 1,seq = x + 1,ack = y + 1
      • 客户端表示收到了接收方的确认并开始通信
  • 四次挥手
    • 客户端:ESTABLISHED to FIN_WAIT_1 to FIN_WAIT_2 to TIME_WAIT(2MSL) to CLOSED
    • 服务器:ESTABLISHED to CLOSED_WAIT to LAST_ACK to CLOSED
    • 第一次挥手
      • FIN = 1,seq = u
      • 表示想结束通信,告知对方
    • 第二次挥手
      • ACK = 1,seq = v,ack = u + 1
      • 服务器表示可以,但还有事没做完
    • 第三次挥手
      • FIN = 1,seq = w,ack = u + 1
      • 等服务器干完了,服务器告诉客户端ok了
    • 第四次挥手
      • ACK = 1,seq = u + 1,ack = w + 1
      • 客户端收到确认,结束通信
    • TCP全双工,主动关闭方发送FIN包后,接收端可能还要发送没发完的数据,
    • 握手时ACK和SYN合并到一个包里发送所以减少了一次发送
    • 挥手先确认ACK,等没有数据要传再发FIN包

最大报文段生存时间 MSL

  • 等待2MSL为了确保剩余的报文段都被丢弃,防止旧的数据报文段在之后的连接中产生歧义、混淆或冲突

TCP vs UDP

  • TCP
    • 面向连接、可靠
    • 头部大小:20-60字节
    • 顺序传递
    • 流量控制、拥塞控制
    • web、文件传输、邮件
  • UDP
    • 无连接、不可靠
    • 头部大小:8字节
    • 无序传递
    • 只有基本检错方法,如:校验和
    • 网络游戏、视频、语言

标签:发送,seq,ACK,基础,TCP,计算机网络,FIN,客户端
From: https://blog.csdn.net/qq_53083744/article/details/140275177

相关文章

  • 生产实习--启明星辰 第四天(Web网络安全基础知识,sql注入,xss攻击,csrf与ssrf,xxe攻击,未授
    web安全的基础知识基本定义Web安全,也称为网络安全或在线安全,是指保护网站、网页和Web服务免受各种威胁和攻击的技术和实践。这些威胁可能来自恶意软件、网络攻击、数据泄露、身份盗窃、服务中断等。Web安全的目标是确保Web应用程序和用户数据的安全、完整和可用性。一般流程......
  • python基础---元组
    元组1.什么是元组(tuple)元组是容器型数据类型,将()作为容器的标志,里面多个元素用逗号隔开:(数据1,数据2,数据3,…)元组是不可变的;元组是有序的元组的元素可以是任何类型的数据t1=(10,20,30)print(t1)#(10,20,30)#空元组t1=()print(t1)#()#只......
  • MyBatisPlus基础查询
    MyBatisPlus基础查询使用:1:多条件查询&排序:QueryWrapper<User>queryWrapper=newQueryWrapper<>();queryWrapper.lambda().ge(User::getId,100).orderByDesc(User::getId);list=userService.list(queryWrapper);2:模糊查询:QueryWrapper<User>queryW......
  • [Java基础]
    数据类型Java的数据类型包括基本数据类型和引用数据类型:基本数据类型:整形:byte,short,int,long浮点型:float,double字符型:char布尔型:boolean引用数据类型:class,interface,array。引用拷贝,浅拷贝,深拷贝引用拷贝在Java中,对象的引用拷贝是指将一个对象的引......
  • [Java基础]反射
    反射获取任意对象的数据对对象一无所知的情况下publicclassStudent{privateStringname;privateIntegerage;publicStudent(Stringname,Integerage){this.name=name;this.age=age;}publicStringgetName(){......
  • [Java基础]HashMap
    HashMapHashMap的数据结构HashMap是:数组+链表/红黑树(JDK1.8增加了红黑树部分)数据底层具体存储的是什么?Node<k,v>这样的存储方式有什么优点呢?数据结构//默认初始容量(数组默认大小):16,2的整数次方staticfinalintDEFAULT_INITIAL_CAPACITY=1<<4;//最大......
  • Gradle基础:从入门到掌握
    人不走空                                          ......
  • 对零基础想转行网络安全同学的一点建议
    最近有同学在后台留言,0基础怎么学网络安全?0基础可以转行做网络安全吗?以前也碰到过类似的问题,想了想,今天简单写一下。我的回答是先了解,再入行。具体怎么做呢?首先,你要确定学习方向。网络安全是一个很大的概念,包含的东西也很多,比如web安全,系统安全,二进制安全,无线安全、数......
  • 网络安全工程师需要学什么?零基础怎么从入门到精通,看这一篇就够了
    前言我发现关于网络安全的学习路线网上有非常多看似高大上却无任何参考意义的回答。大多数的路线都是给了一个大概的框架,告诉你那些东西要考,以及建议了一个学习顺序。但是这对于小白来说是远远不够的,有的可能还会有误导性!比如说很多的学习路线会说要从语言开始学起,于是很......
  • 【2024最新】零基础如何学习挖漏洞?看这篇就够了(超详细)
    文章目录前言什么是漏洞挖掘学习漏洞挖掘的正确顺序漏洞挖掘需要具备的知识漏洞挖掘需要做什么有关漏洞挖掘的其他想法漏洞的复杂性团队工作写在最后==如何入门学习网络安全【黑客】==【----帮助网安学习,以下所有学习资料文末免费领取!----】大纲学习教程面试刷题资料......