图解TCPIP—基础知识(前三章干货少 重点在后边)

表示层:将计算机特定的数据格式转换为网络标准数据格式,标记格式编码
会话层:用于选择建立哪种连接方式,会在数据前端增加首部或标签信息
传输层:会话层只做何时建立连接,何时发送数据,到具体传输数据比如从建立连接,传输和重发机制,断开连接都是传输层工作
物理层:将包含MAC地址的数据附加到从网络层收到的数据首部上,将其发送到网络上
传输方式:
面向有连接和无连接、电路交换和分组交换
分组交换,将数据分组,加上目的地址发送给路由器,路由器收到后缓存,最后按照顺序发送到目的地址
mac地址和ip地址均有唯一性,但后者具有层次性,IP地址有网络号和主机号组成,网络传输时MAC地址和IP地址会分别查找地址转发表和路由控制表。
交换机中对应生成地址转发表,路由器中生成对应的路由控制表。
带宽即为传输速率单位bps,带宽越大网络传输能力越大
中继器又称为集线器,物理层设备,延长网络通路,放大信号。
网桥-2层交换机,根据数据帧格式转发给相邻的设备,OSI第二层数据链路层设备,可存储数据帧。有地址自学机制和过滤功能。
路由器是在OSI3层网络层连接两个网络,对分组报文转发的设备,是根据IP地址处理的
由于路由器会分割数据链路,因此数据链路层的广播消息无法传播
4到7层交换机负责处理传输层到应用层数据,负载均衡器就是4-7层交换机的一种
4-7层还可以做特殊应用访问加速
网关负责协议转换和数据转发,在同一种协议的网络中的网关为应用网关
代理服务器是应用网关的一种

第四章IP协议

TCP/IP协议中,每个包首部至少包含两个信息,一个是发送端和接收端的地址,一个是上一层的协议类型,数据包经过每个协议分层时,都会有识别发送端和接收端的信息,以太网用MAC地址,IP层用IP地址,TCP/UDP用端口号
交换机学习MAC地址,可以知道主机与哪个端口连接。
以太网帧格式:前导码➕SFD,共8字节,最后两位为11,表示SFD,以太网帧本体的前端是14字节的首部,分别是6字节目标MAC地址,6字节MAC地址,2字节上层协议类型,紧跟帧头后边是数据,长度是46-1500,帧尾是4字节帧检查序列
数据链路层提供两台直连设备的通信传输,网络层提供没有直连的两台设备的通信传输

第五章IP协议相关技术

IP传输:
每个IP包到达路由器时,路由器会首先查询目标地址,然后再决定下一包发往哪个路由器
路由控制表:每个IP主机和路由器都记录一张路由控制表,里边包含哪个路由器跟哪个网络连接
IP层主要实现多个数据链路层之间的通信,不同数据链路层之间主要区别是传输的数据包大小不一致。Ip层会对包进行分片处理,IP层是面向无连接的协议,如果每次建立连接会影响传输效率,维护连接关系也很耗时。
上一层TCP则面向连接型协议,为了可靠传输
IPV4总共有42亿个有效地址,理论上可以配置给42亿张网卡,不是42亿台计算机
IP地址由网络标识和主机标识两部分组成,现在主要采用子网掩码来来区分二者,路由器通过网络标识即可对IP包进行转发
子网掩码:区分A B C D类更小粒度的网络,子网掩码中全为1的部分对应网络标识,全为0的部分对应主机标识
路由控制表的聚合可以缩小路由控制表的大小,减少内存占用,便于维护管理
针对IP包MTU过大问题,提出了路径MTU发现解决方案,主要通过主机操作系统来实现。
DNS是维护一个用来表示组织内部主机名称和IP地址对应关系的数据库。
域名服务器是管理域名的主机和软件,每个域分层都有一个域名服务器
ARP:地址解决协议,发送主机向目标主机请求获取MAC地址,在TCPIP网络构造中无需提前知道目标主机的MAC地址是什么
DHCP:一般采用中继代理路由器和DHCP服务器进行IP地址管理。
NAT:网络地址转换器,可以实现利用本地私有地址和全局IP地址的目标主机通信。
TCP用于可靠性传输,具备流控制,拥塞控制和重发机制
UDP用于实时性较高的快速传输协议,例如多播或广播中
在操作系统编程时,会用到套接字,这是起初由unix开发,移植到windows中的类库
数据链路层和IP层的分别用mac地址和IP地址来区分主机,传输层也有类似地址的概念,端口号,用来区分不同进程,也叫程序地址。
但是仅仅一个端口号无法区分一个通信连接,例如不同的源地址同时向同一个进程发送数据,这样只能通过源地址区分。

第六章TCP与UDP

TCP控制
TCP需要通过校验和、序列号、重发机制、连接管理、窗口管理等机制实现可靠性传输。
重发机制之发送端:TCP发送数据包对应一个肯定的ACK,如果特定时间内没有收到这个ACK,认为丢包,下一步进行重发。
重发机制之接收端:发送端未收到肯定的ACK不一定表示数据丢失,也可能是网络阻塞等导致接收端发出了ACK但发送端没收到
为了避免重复接收数据,TCP在每个字节数据后都加上一个序列号,接收端在TCP首部的序列号和数据长度判断下一包需要接收的数据。
TCP连接管理
TCP建立连接会发送第一个SYN包作为请求应答包,发送方则为客户端,接收方为服务端,一次完整的TCP连接断开管理至少需要发送7次包才能完成,即著名的三次握手四次挥手!
三次握手:
客户端请求建立连接SYN包;
服务端应答响应和请求建立连接包ACK+SYN
客户端应答响应包ACK
四次挥手:
客户端请求断开连接包FIN
服务端针对FIN的确认应答包ACK
服务端请求断开连接包FIN
客户端针对FIN的确认应答包ACK
TCP中MSS的确定
TCP建立连接是会在主机发送的SYN请求包首部加入MSS选项,告诉自己适用的最大消息长度,最后客户端与服务端选择较小的值使用
为附加MSS选项,TCP首部长度不再是20字节,而且4字节的整数倍,为什么?
TCP窗口管理提升性能
TCP以数据段的形式发送数据,且不是每次发送一个数据段都要等待确认应答,而是以更大的单位进行确认,这样缩短转发时间,可以在往返时间较长的情况下,控制网络性能的下降。窗口大小为无需等待确认应答而可以继续发送的最大段个数即为窗口
这样会同时使用大量缓冲区,如果有确认应答未收到的,不用立即重发,而是等待连续3次收到同样序号的确认应答后再进行重发。
困惑点:
窗口控制与重发,在窗口内连着2包发送失败,重发后,在第8包发送后,那中间的数据有没有丢失如何确认?
流控制
通过接收端的实际接收能力来控制发送端发送的最大数据限度,也就是窗口的大小
接受端会给发送端通知自己接收数据的最大限度。
TCP首部中专门有一个字段来存放接收端能够接收数据的大小,接收端把接收缓冲区的大小放在该字段中,该字段值越大,网络吞吐率越大。
在接收端缓存区溢出后,停止接收数据同时给发送端的应答包中告知缓存区已满,发送端则等待窗口更新通知
发送端在等待时间超过重发超时的时间后,若还没有等到窗口更新通知,则向接收端发送一包窗口探测包,一般探测包只有一个字节用来获取最新的窗口缓存区大小的信息。
拥塞窗口
为了控制发送端发送数据的量
■慢启动时候发送端将这个拥塞窗口的量设置为1个数据段,每一次ACK后,拥塞窗口加1个数据段
■在每次发送数据包时,比较拥塞窗口与接收窗口值的大小,取比二者都小的数据包进行发送
■为了避免拥塞窗口值越来越大导致网络瘫痪,设置拥塞窗口阈值,只要超出阈值则按比例缩小拥塞窗口,故一般超过后,就变为线性增加了
捎带应答,将确认应答和消息回执放在一个包里边发送,不用分两次发送,这样必须要启用延迟应答机制
TCP各种各样的控制机制可以使其满足可靠高速的应用,但是也有一定的缺陷,比如延迟应答多少会影响实时性
UDP协议反而可以做一些更为细节的控制,对可靠性要求不是很好的情况下,UDP也是一个不错的选择。

第七章路由协议

静态路由指提前设置好主机和路由器固定的路由信息,这样导致管理会麻烦,比如新增一个路由节点,需要在所有路由设备上重新设置,一个节点故障,则无法绕过该节点到达对端。
动态路由指路由器自己生成路由控制表等路由信息,管理方便,一个节点故障不容易影响网络通路。
路由协议IGP、EGP,前者为内部网关协议,主要有RIP和开放式最短路径优先,后者有边界网关协议
一般两种情况搭配使用。
动态路由基础是给相邻路由器发送路由控制表信息,直到整个网络都了解。
路由算法
距离向量和链路状态算法
路由向量,路由器之间互换目标网络的方向和距离信息,并以此为基础创建路由控制信息表,如果有两条路径可以到达目的主机,则选择距离最小的一条。距离向量的单位为跳数,RIP协议就是基于距离向量算法的路由协议,每个路由器每隔30秒时间广播自己已知的路由信息,如果路由器连续6次没有收到路由信息则关连接。
链路状态算法,每个路由器存储所有网络状态,路由控制信息相同,
OSPF路由协议:
OSPF掌握着完整的链路状态,可以从中选择最短的路径用来决定最终的路由选择。
链路状态为连接状态,即路由器A与网络A连接,路由器B与路由器A与网络A连接。协议给每条链路赋予一个连接权重,即代价,选择一条最小权重值链路作为最终路由。
代价可有管理员手动配置,较为灵活。
OSPF中根据5包数据完成路由信息更新操作。HELLO建立连接包、数据库描述包、链路连接请求、链路状态更新、链路状态确认应答。
OSPF下,路由器根据链路状态生成链路状态数据库,采用Dijsktra算法(最短路径优先算法)生成相应的路由控制表。
OSPF问题在于网络规模较大时,生成路由控制表变得较为复杂,为此采用区域划分方法
将区域分层化进制细化管理
BGP:边界网关协议
ISP和区域网络会将每个网络域编配成一个个自治系统AS,为其分配一个16bit的AS编号。
BGP用AS作为度量标准,根据AS之间的合约进行转发,一般选择AS数量较少的路径,不过也要根据合约进行更细粒度的路由选择,是一种路径向量协议,可避免环路导致的无线计数问题,同时支持策略配置

第八章应用协议

通过telnet连接到主机端时,通常需要将用户的用户名和密码注册到服务端,但是无需输入密码也可以进行发送,不安全
telnet客户端通常与目标主机23号端口进行连接,并与监听该端口的telnetd 程序进行交互
SSH是加密的远程登录系统。

第九章网络安全

防火墙,专门过滤特定数据包的包过滤防火墙,例如只允许对web服务器的TCP 80端口和邮件服务器TCP 25端口进行访问,其他包丢弃;数据到达应用后由应用处理并拒绝访问的应用网关;只允许从内网建立TCP连接,通过SYN和ACK包来区分,如果外网发来SYN=1,ACK=0则应当废弃,以此达到只能存内网连接的目的。
入侵检测系统IDS
数据包只要符合安全策略,防火墙便会让其通过,即只要与策略相符就无法判断当前访问是否为非法访问,所以全部允许通过
IPsec和VPN
在IP包首部后增加封装安全有效载荷和认证首部,从而达到对之后的数据进行加密,不被盗取者轻易解读
发包时候增加这两首部,接收时候可以根据这两首部解密恢复数据,由于加密的数据不能轻易破解,且含有摘要值,所以即使被篡改也可以识别出来。以上安全协议即为IPsec
基于IPsec功能,使用者就可以在一个网络上建立一条安全的专用的网络通道。即虚拟专网VPN

图解TCPIP 笔记相关推荐

  1. webpack图解-学习笔记

    文章目录 webpack图解-学习笔记 webpack与vuecli关系 为什么要打包? 什么是webpack? webpack-dev-server 手动配置文件 把打包后的js文件整合到html中 ...

  2. 图解HTTP笔记(二)——HTTP状态码

    图解HTTP笔记(二)--HTTP状态码 本章的主要内容是了解HTTP状态码的工作机制 HTTP 常见的状态码,有哪些? 下面介绍一下常用的一些状态码. 一.1xx 提示信息 1xx 类状态码属于提示 ...

  3. 图解HTTP笔记(一)

    图解HTTP笔记(一) 博主建了一个学习群 感兴趣的小伙伴可以加入一起学习交流      点我进群     一起学习交流!(群里有许多的学习资料,我做过的一些网页我都上传在群里了,需要的直接下载就可以 ...

  4. 《TCP IP网络编程》阅读笔记及部分《图解 TCPIP》《图解 HTTP》补充笔记

    第一章:理解网络编程和套接字 接受连接请求的套接字(接电话) 服务器端创建的套接字又称为服务器端套接字或监听套接字. socket 套接字编程. 为了与远程计算机进行数据传输,需要连接到因特网,而编程 ...

  5. 4.1《算法图解》笔记——Chapter 6 Breadth-First Search

    算法图解笔记--Chapter 6 Breadth-First Search Author: Seven Zou Email: zoushiqi0404@gmail.com Language: Pyt ...

  6. 《图解TCPIP》知识学习(1.2):计算机与网络发展的7个阶段

    道阻且长,行则将至.埋头苦干,不鸣则已,一鸣惊人!加油,骚年! 1 参考资料 参考书本资料: <图解 TCP/IP (第 5 版)>,P5 : 2 不同阶段总结   计算机使用模式的演变, ...

  7. 算法图解学习笔记02:递归和栈

    计算机内存原理 要说递归和栈的问题,首先就要说下计算机内存的基本原理.简单理解计算机内存原理可以将一台电脑看作超市的存包柜,每个柜子都有柜号(即计算机中的地址,如0x000000f).当需要将数据存储 ...

  8. 算法图解读书笔记:附程序

    算法图解通俗易懂,下面是随书练习程序,基于python3 二分法 #二分法 def binary_search(list, item):low = 0high = len(list)-1while l ...

  9. 算法图解 读书笔记(上)

    最近看了一本算法入门书--算法图解. 封面的插画很好玩儿.最吸引我的还是封面里的一句话:向小说一样有趣的算法入门书. 上个封面,大家感受一下: 一.算法简介 1.1 二分查找 一个有序数组中找一个数的 ...

最新文章

  1. 如何有效的使用C#读取文件
  2. centos6.5 设置tomcat8自启动
  3. [HOW TO]-ubuntu20.10搭建openjrok服务指南
  4. DataFactory连接MySQL数据库
  5. popoupwindow 点击背景消失_欺骗13亿人 国产剧的“假房子”什么时候消失?
  6. 问题 C: PK没有女朋友(判断是否存在1个三元环,dfs)
  7. 【通信】基于matlab GUI短波通信系统仿真【含Matlab源码 647期】
  8. 从“运维”处谈OFO失败
  9. 三菱PLC 定时器
  10. 【华人学者风采】李进 广州大学
  11. 我是谁,没有绝对安全的系统
  12. Linux系统中三处profile的作用
  13. 网页性能测试工具大全
  14. 从Python爬虫到Spark预处理数据的真实需求[二]
  15. 源生的html属性js,源生JS怎样实现todolist功能
  16. pymssql连接sql server报错:pymssql._pymssql.OperationalError
  17. 冰封王座 英雄被动技能评估
  18. 大学生就业、创业在路上-天下人
  19. 单片机实例26——点阵式LED简单图形显示技术(硬件电路图+汇编程序+C语言程序)
  20. 百度隐藏“快照”功能:原因未知

热门文章

  1. 教之初服务器管理系统使用,教之初题库管理系统操作教程-考题处理
  2. 4、安全理论与框架-企业架构模型(EA)-DoDAF国防部架构框架
  3. 一文讲透研发,SRE,运维,DevOps 的区别
  4. 使用hydra密码字典破解Windows10登陆密码
  5. [Dxperience.8.*]报表预览控件PrintControl设置
  6. 易语言mysql修改语句_易语言-MySQL-update源码例程
  7. wordpress 插件,wordpress 采集插件,实用wordpress 插件合集
  8. java俄罗斯方块程序_使用JAVA编写的俄罗斯方块程序, 具有非常全面的功能.
  9. cruise软件模型,混动仿真模型,IMMD架构混联混动仿真模型,Cruise混动仿真模型
  10. 几种免费的界面库及其用法(转)