图解TCP/IP读书笔记

目录

1.网络基础知识

2.TCP/IP基础知识

3.数据链路

第四章:网际协议 (IP)

第五章:IP协议相关技术

    1.DNS

  2.ARP

 3.ICMP

  4.DHCP

  5.NAT协议

  6.IP隧道

第六章:TCP与UDP

第七章:路由协议

 第八章:应用协议

第九章:网络与安全


1.网络基础知识

TCP/IP是通信协议的统称

 应用层:给发送数据添加首部,表明内容与收信人

 表示层:将数据按照编码格式转换为文字流,添加首部

会话层:同时发送多条数据,会话层决定了采用何种连接方式,添加首部

传输层:负责确立连接与断开连接,还有重传机制,保证了数据的可靠传输,添加首部

网络层:基于目的地址在网络层发送数据包,添加首部。网络层不能保证数据的可达性。

数据链路层:也是基于目的地址将数据发送给接收端,但是网络层是将整个数据发送给最终目标,数据链路层只是负责发送一个分段内的数据。

物理层:将数据的0,1转换为电压和脉冲光给物理的传输介质,而相互直连的设备适应地址进行传输,这种地址也叫MAC地址。

                                                                           以发送电子邮件为例
分层名称功能功能概览
应用层针对特定的应用协议,会在传送数据的前端附着一个首部,表明邮件的内容'早上好',和接收人‘B’
 
针对每个应用的协议,电子邮件,邮件传输等等。
表示层将应用固有的数据格式转化为网络标准的数据格式,这里将邮件的内容转为文字流,并且添加首部,表明他的编码格式。不同的应用传过来的数据格式是不一样的,有的应用传送的是图片,有的是文本,有的是声音等等,在这里通通做一个统一的转换
会话层决定采用哪种连接方式,是一个连接发一封邮件,还是一个连接发多封邮件,是顺序发还是一起发,在这里也会添加一个首部,记录着数据传送的顺序采用哪个连接发送?以及保持多久的连接
负责建立和断开通信的连接(数据流动的逻辑通路),管理传输层以下的分层。
传输层创建逻辑上的通信连接,确保数据被可靠传输到目的地址(确认没有收到会重传)。
负责连接的建立和断开,会在数据添加首部,表明他是这一层的数据。
确保两个节点之间数据的可靠传输
网络层地址管理与路由选择,传输层虽然叫传输层,但是数据的传输是由网络层来完成的。网络层就是靠着目的地址进行数据包的发送,但是网络层是不保证数据的可达性的,可靠性需要传输层来保证。经过哪个路由传递到目标地址。
数据链路层互联设备之间传送和识别帧,将数据帧转化为比特流交给下一层。所以他还是需要目标地址。网络层是将整个数据发送给最终目标,
数据链路层只是负责发送一个分段内的数据。
物理层比特流和电子信号的转换将数据的0,1转换为电压和脉冲光给物理的传输介质,
而相互直连的设备适应地址进行传输,这种地址也叫MAC地址。

传输方式的分类: 面向连接与面向无连接。

电路交换与分组交换

分组交换:发送端将数据分组发送给路由器,路由器接收分组后缓存到自己的缓冲区,然后以先进先出的方式将他们发送到目标计算机。 多个用户同一时间共享一条通信信道。

2.TCP/IP基础知识

 www:也叫万维网,是一种互联网上读取数据的规范,  浏览器与服务端之间用到的通信协议是http,传输的数据格式是html,www中的http属于应用层协议,html属于表示层协议。

3.数据链路

   数据链路层:以太网,无线局域网(LAN),PPP

  数据链路也可称为网络传输中的最小单位,连通世界的互联网就是无数的数据链路组成的。

  数据链路中的相关概念:

   MAC地址:占用48比特,在一个数据链路中全世界唯一

   想要通信就需要介质:介质分为共享介质型网络和非共享介质型

   共享介质型:半双工通信,有两种介质访问控制方式,一种是争用方式,另一种是令牌传递方式。

     非共享介质型网络:全双工通信方式,是以太网中用得最主流得方式。由于不共享所以不会发生冲突。该方式还可以根据交换机得高级特性构建虚拟局域网(VLAN)

  

     以太网交换机:是一种非介质共享型网络中使用的交换机,持有多个端口,根据数据链路层中每个帧的目标MAC地址决定从哪个网络接口发送数据。

    根据MAC地址转发这里就用到了以太网交换机的自学习功能

 环路检测: 通过网桥形成网络环路的时候该怎么办?生成树和源路由法解决

 以太网:数据链路中最有名的数据链路

  采用的是独占电缆的方(非共享介质型网络)

  以太网帧的格式:

  以太网帧前端有一个叫前导码的部分,表示一个以太网帧的开始占用八个字节。

  以太网帧的首部使用14个字节,6+6+2

   数据的大小是46~1500个字节

   最后又帧检验序列 4个字节 FCS    循环冗余检测法

PPP:一对一连接计算机的协议,处于数据链路层

第四章:网际协议 (IP)

    数据链路层的作用是将在互连同一种数据链路的基础上,让两个节点进行通信,而网络层的作用是跨越了数据链路层的限制,让不同数据链路层上的节点能通信。

   那么问题就是怎么通过IP协议,来跨越数据链路层发送数据包呢?

路由技术详解|IP数据包是如何在网络中转发的? - 知乎

   简而言之数据包在路由器上的流转是这个样子的:

     路由器收到一个数据包以后,路由器首先提取出报文的目的IP地址,然后查找路由表,路由表的形成一般是由动态主机路由的协议来形成。报文的目的IP地址与路由表中某表项的掩码字段做“与”操作,“与”操作后的结果跟路由表该表项的目的IP地址比较,相同则匹配上,否则就没有匹配上。当与所有的路由表项都进行匹配后,路由器会选择一个掩码最长的匹配项。如果没有找到,会查找是否有缺省路由,找到的话会依据出接口信息和下一跳信息将数据包转发出去;如果都没有找到,数据包会被丢弃

IP层的作用:第一是IP寻址,第二是路由,第三是IP分包,第四是IP组包。

  一个数据包能够正确成功的到达目的主机全靠路由控制。主机上维护了一张路由表:

该表记录IP数据下一步将发给哪个路由器,IP包将根据这个路由表在各个数据链路上传输。

 

  网络目标:显示了路由器连接到的所有网段

  网络掩码:网络掩码和这个IP地址,就可以确定他的网络地址,即可以确定他的网段,网络号。

  IP4地址32位无符号整数,由主机号和网络号组成。以前有ABCD类之分,用来固定他的网络号和主机号的位数,但是那个分类不灵活,现在都用CIDR无分类编址来区分,再加一个子网掩码即可确定他的主机号和网络号各占多少位,属于哪个网段。

  路由控制

    我们着重详细的讲一下路由的控制,首先说这个路由表的形成方式有两种,一种是通过管理员手动设置的叫静态路由,一种是通过主机动态路由协议,动态刷新。

       

    图是主机A给主机B发送数据包,首先主机A在10.1.1.0/24这个前24位为网络号的网段上,查询他的路由表和包的目标地址10.1.2.10发现,该目标地址的网址与当前的网段10.1.1.0/24不匹配,经过默认路由发出,到达10.1.0.0/24的网段上的路由器1,这个时候路由器提取数据包的目标地址10.1.2.10,然后通过与他的子网掩码找到他的网络段是10.1.2.0/24,然后查找路由器1的路由表,发现这个网段的包应该发往10.1.0.2这个路由器,然后达到路由器2,然后通过相同的方法计算网络段,然后查找路由表,将他发送到目标主机B所在的网段上,然后目标主机收到这个数据包后提取目标地址,正是他自己,于是开始组包。

我们知道数据包是怎么在网络上流转的了,那么数据包怎么进行分割处理的呢?

 每种数据链路都有最大的传输单元MTU,以太网的MTU就是1500个字节,IP抽象化了底层的数据链路,MTU的大小是65535个字节。

  经过分片后的IP数据报只能由目标主机重组,路由器不能重组。

  发送主机按照路径MTU大小将数据分片后进行发送。UDP和TCP在这个地方是不一样的处理的。

路径MTU的工作原理,每一次分片大小的确定?这个分片的大小是如何确定的?

   首先在IP数据包的首部中将分片的标志位设置为1,就是分片,然后途中的路由器将包丢弃,随后通过ICMP协议将不可达消息数据链路上的MTU的值发送给主机,然后主机再按照这个大小来分片。

UDP与TCP分片的不同:

  1.UDP不需要重发,所以分层在IP层进行分,发送到主机后IP层要重组,然后再给上层的UDP

  2.TCP需要重发,所以分片在TCP进行分,然后发送到主机,到了IP层也不是IP层分的,所以IP层也不知道怎么重组数据,直接交给上层TCP,让他去处理

 

最后一个点:IP数据报的首部格式  我们只需要理解一点,就是这个首部格式里面的字段都是用来完成IP层的功能的。

  

第五章:IP协议相关技术

    1.DNS

       由于IP地址难以记忆,所以通常都会使用域名,TCP/IP的世界一开始就有主机识别码这个东西,他会将主机名转换为具体的IP地址。实现这个功能是通过主机里面的hosts数据库文件,在这个背景之下,产生了一个有效管理主机名与IP地址关系的系统,这个就是DNS系统。适用于IPv4和IPV6。

     用户使用的电脑和工作站都是DNS解析器,用于DNS查询,目的是获得IP地址。查询的过程为向域名服务器进行查询处理,接收这个查询请求的域名服务器会现在自己的服务库里面查找。周到就返回,没有找到就向上一层根域名服务器查询。查到结果解析器缓存。

  2.ARP

    通过DNS拿到了ip的地址,但是如何获取这个ip所对应的MAC地址呢?因为数据链路上传输需要MAC地址对吧。这个时候就需要ARP协议发送ARP请求获取目标主机的MAC地址。只适用于IPV4.

  ARP的工作机制如下:如果说目标主机与源主机在同一个网段上,那么此时是不需要IP地址来参与的,源主机广播一个ARP的包,统一链路的主机都会收到这个包,检查目的IP与自己的ip一样,就把自己的MAC地址塞到ARP响应中返回给源主机。不可能每发一个IP数据报都要请求MAC地址,所以这回有一个ARP缓存表。

   如果说在不同的网络中,此时就需要ip地址。

 3.ICMP

  用于网络的诊断,通知出错的原因和错误的消息。

  主要的ICMP消息 :目标不可达,超时等等。

  4.DHCP

     动态获取主机ip的协议,ipv4,ipv6都适用

  5.NAT协议

    私有IP要去访问全局的ip的时候会先转换为全局IP,在NAT路由器里面转换。

  6.IP隧道

   ipv4的网络和ipv6的网络进行通信就会用到ip隧道,即在IP数据报的首部上再加一个IP首部。

  

第六章:TCP与UDP

   在ip的首部有一个协议的字段,用来标识传输层用的是那种协议。

 不同的应用程序在系统中启动后,都会有一个守护进程来在某个具体的端口监听,例如http服务端的程序是httpd,在443端口监听,但是其实不会每个程序都这样监听者,会有一个超级守护进程负责监听所有的请求。改超级守护程序收到客户端的请求后会fork(创建)新的进程并转化(exec)为httpd等守护进程。

    应用程序在使用TCP、UDP 的时候,会用到操作系统的类库,广泛用到套接字Socket的API,

用用程序利用套接字可以设置对端的ip,端口,并实现数据收发。

                        

 TCP如何实现可靠传输?

    TCP通过校验和,序列号,确认应答,重发控制,连接管理,以及窗口控制来实现可靠传输。

 TCP发送的消息是以段为单位的,段的大小呢在三次握手的时候可以确认。段的大小也称为最大消息长度MSS。两端主机发出建立连接的请求,在TCP的首部写入MSS选项,告诉对象自己的接口能适应的MSS大小。然后选一个较小的值投入使用。

   通过序列号和确认应答提高可靠性

通常发送数据段,接收端收到后会回复一个确认应答(ACK),那么具体是是哪个包收到了呢,这个时候需要一个序列号来确认。将自己下一步应该收的序列号作为确认应答返回。

  不管是发送的时候丢包,还是确认应答的时候没有收到,都会导致超时重传,那么重传的超时时间改如何确认呢?这是根据网络环境来的,通过计算往返时间,来确认超时重传的时间,往返时间越长,重发超时就越长。等待确认的时间是以2倍,4倍的指数函数延长,到达一定的重发次数,则强行关闭通信。

                   

  

 三次握手与四次挥手的流程:

                         

     利用窗口控制提高速度

  数据段不可能是发一个就立马收到确认然后再发送一个,而是将多个数据段作为一个窗口一起发送,确认应答也是以窗口的单位进行确认。并不会因为窗口中某个段没有收到确认应答就停止下一个窗口中段的发送。这个功能的实现用到了大量的缓冲区。

    在滑动窗口中如果出现段丢失,不再是使用超时重发的机制,而是采用的高速重发控制,工作的原理就是窗口中的某段丢失后,发送端会一直受到某个需要的确认确认应答,告诉发送端,他想接受的段是从序号为多好开始,如果连续三次收到同一个应答,就会对其数据进行重发,这种方式更高效。

                        

    但是现在有一个问题,发送窗口的大小如何确定呢?

  如果能依据接收端的实际接收能力来发送数据,这样不是最好的吗?恰好TCP就提供这种流量控制的机制。他的具体操作是接收端向发送端通知自己的窗口大小。就这么简单,通过TCP首部来实现,接收端将能接收的大小写进TCP首部发送给发送端。缓冲区满了接收端就要停止接收数据,发送端就收不到确认应答,就不会发送数据,直到收到确认,确认里面带有窗口更新的通知,然后再以新窗口的通知发送数据,如果长时间没有收到确认应答(窗口更新通知),就会发送一个窗口探测包去获得窗口的大小。

            

    拥塞控制

      虽然有滑动窗口,但是不可能一开始就发送很大的窗口,这里有一个叫慢开始算法对发送的数据量进行控制。

   发送端会有一个拥塞窗口的概念,他的大小一开始就是1MSS,然后收到确认应答后,增加1,。

在发送数据包的时候,将拥塞窗口的大小和接收端通知的大小作比较,按照他们中较小的那个值,发送比其还要小的数据量。

第七章:路由协议

 路由器就是根据路由控制表转发数据包,路由控制分为静态跟动态协议,两种协议可以组合起来使用。

动态路由会给相邻的路由器发送自己已知的网络信息,当整个网络都了解时,路由控制表也制作完成。从而可以正确转发IP数据包。

 路由协议分为两类:外部网关协议EGP,内部网关协议IGP。

 路由算法有两种,距离向量算法和链路状态算法。

  

 第八章:应用协议

  telnet命令:他时利用TCP的一条连接,利用这条连接向主机发送命令,并且在主机上执行

  比如我要检测某一个主机的某个端口是否开启:

   

   SSH:是加密的远 程登录系统,telnet是不加密的远程登录系统。

    ssh  ip -l user -p port

 FTP: 两个相连计算机之间进行文件传输使用的协议

  FTP的工作机制,他是用到了两条TCP连接,其中一条用来控制,另外一条用于数据传输。

 用于控制TCP连接主要在FTP控制部分使用,利用用户名密码的验证等等。操作文件的是梁歪一条传输数据的TCP连接,当数据传输完成后,这条连接就会断开。下次要传输数据的时候再连接。

电子邮件:SMPT采用TCP链接 在25端口监听。

  提供电子邮件服务的协议叫做SMTP协议,接收电子邮件的服务叫做POP3。

  电子邮件所能发送的数据类型扩展到了MIME,就是可以发送动画,声音。

HTTP:

    HTTP采用的是TCP链接,在HTTP1.0中每一个命令和应答都会触发一次TCP连接的建立和断开,HTTP1.1就允许在一个TCP连接上发送多个命令和应答。

  

第九章:网络与安全

  加密和解密使用相同的秘钥叫做对称加密方式,如果加密和解密的过程中使用不同的秘钥叫做公钥加密方式。

  对称加密: AES,DES

  非对称加密: RSA DH

web中可以通过TLS/SSL 通HTTP通信进行加密,HTTPS通信通信中用到了两种加密的方式,HTTPS中用的对称加密,而在发送其公共秘钥时采用的是公钥加密方式。

        

   本书电子版本:https://leon-wtf.github.io/doc/%E5%9B%BE%E8%A7%A3TCPIP.pdf

     

  

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

时空恋旅人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值