计算机网络实用基础

定义

利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件以及协议实现资源共享和信息传递的系统。

分类

计算机网络从覆盖范围上可以划分位三类:局域网、城域网、广域网。局域网LAN(作用范围一般为几米到几十公里)、城域网MAN(界于WAN和LAN之间)、广域网WAN(作用范围一般为几十到几千公里)。当然计算机网络划分不止这一种分类方式,可以按照拓扑结构分类(总线型、环型、网状)、还可以按信息的交换方式(电路交换、报文交换、报文分组交换)来分。

计算机体系结构

  • OSI分层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
  • TCP/IP分层模型:链路层、网络层、传输层、应用层。

无论是哪种模型,每一个抽象层都建立在低一层提供的服务上,并且为高一层提供服务。

TCP/IP协议

TCP/IP模型 功能 TCP/IP协议族
应用层 文件传输、电子邮件、文件服务、虚拟终端 HTTP、FTP、DNS、SNMP、TFTP、Telnet
数据格式化、代码转换、数据加密 没有协议
解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP、UDP
网络层 为数据包选择路由 IP、ICMP、IGMP
链路层 传输有地址的帧以及提供错误检测功能 SLTP、PPP、ARP
以二进制数据形式在物理媒体上传输数据 ISO2110、IEEE802

对于应用程序开发人员来说,与我们打交道的,大多数是高级语言,像java、c等。而这些高级语言中通常都会封装好相应的网络协议的api接口,像我们熟悉的http协议,java就有相关的api接口,我们只需要调用合适的api接口进行设置即可。
对于tcp/ip协议族,众多的协议中应用程序开发人员最熟悉的莫过于http协议,在http协议中的请求头、响应头其实就是网络中所说的首部,请求体、响应体就是数据。我们通过调用相关的api接口进行设置,通常的开发就已经足够了。

物理传输中的数据

  • 包是全能性术语
  • 帧用于表示链路层中的包的单位
  • 片是IP中数据的单位
  • 段表示TCP数据流中的信息
  • 消息指应用协议中数据的单位

每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关的信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。
网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义。在数据包的首部,明确标明了协议应该如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据。

TCP/UDP

  • TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个建立连接的过程(三次握手),等到连接建立后才开始传输数据,而且传输过程中采用“带重传的肯定确认”技术来实现传输的可靠性,TCP还采用一种称为“滑动窗口”的方式进行流量控制,发送完成后还会关闭连接。
  • UDP是把数据直接发送出去,而不管对方是不是在接收,也不管对方是否能接收,也不需要接收方确认,属于不可靠传输,可能会出现丢包现象,实际应用中需要程序员编程验证。
  • 个人认为如果不是专门做网络的相关的,只是应用程序开发人员,了解即可知道有什么优点就行了,实际工作中无法实践到这块的。。。

注意:我们软件开发常见的网络应用例如ftp,http等都是基于TCP和UDP的,这两个协议又会使用网络层的IP协议。但是我们完全可以绕过传输层的TCP和UDP,直接使用IP,例如tcpdump程序就是直接和链路层进行通信的。

三次握手与四次挥手

  • TCP的三次握手的漏洞SYN洪泛攻击
    如果我们利用三次握手的缺陷进行攻击。这个攻击就是SYN洪泛攻击。三次握手中有一个第二次握手,服务器向客户端应答请求,应答请求是需要客户端IP的,攻击者就可以伪造这个ip,往服务器疯狂发送第一次握手的内容,当然第一次握手中的客户端ip地址是伪造的,从而服务端忙于进行第二次握手但是第二次握手没有结果,所以导致服务器被拖累,死机。
    面对这种攻击,有以下的解决方案,最好的方案是防火墙。
    1. 无效连接监视释放
      这种方法不停监视所有的连接,包括三次握手,还有一次握手的,反正是所有的连接,当达到阈值时拆除这些连接,从而释放系统资源。因为这种方法对于所有连接都是一视同仁的,不管是正常还是攻击的,所以不太推荐。
    2. 延缓TCB分配方法
      一般的做完第一次握手后,服务器就需要为该请求分配一个TCB(连接控制资源),通常这个资源需要200
      多个字节。延迟TCB的分配,当正常连接建立起来后再分配TCB则可以有效减轻服务器资源的消耗。
    3. 使用防火墙
      防火墙在确认连接的有效性后,才向内部服务器发起SYN请求。

MAC地址和IP地址

  • mac地址
    即物理地址,由网络设备制造商生产时写在硬件内部。MAC地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到无论的何处,都有相同的MAC地址,它由产商写在网卡的bios里,从理论上讲,除非盗来网卡,否则时没有办法冒名顶替的。MAC地址共有48位。前24位由IEEE决定如何分配,后24位由实际生产该网络设备的产商自行决定。
  • ip地址
    为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,它是有可能改变的。
  • 端口
    端口号用来识别同一台计算机进行通信的不同应用程序。一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。

一次完整的HTTP请求

  1. 域名解析(这个说了一下域名解析的过程) ,解析出对应IP地址
  2. 解析成功之后,发起TCP三次握手建立连接
  3. 建立连接后发起HTTPS请求
  4. 服务器响应https请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求静态资源(html/css/js等)
  6. 然后浏览器渲染,展示给用户

一次完整的http请求过程

你可能感兴趣的:(计算机网络,网络,tcp/ip)