网络(一)——网络基础知识

目录

    • 1、概念介绍:
    • 2、网络分层
    • 3、主要协议说明:
    • 4、TCP UDP的区别
      • TCP报头解析
      • UDP报头解析
      • 补充,IP报头解析
    • 5、java封装的类介绍:

1、概念介绍:

  1. 计算机网络是通过传输介质、通信设施和通信协议将分散在不同点的计算机设备互联起来实现资源共享和数据传输的系统;(网络编程就是编写程序使联网的两个或者多个设备直接进行传输);
  2. 地址:IP地址,确定网络上的一个绝对地址,确定电脑,MAC地址,计算机的物理地址;
  3. 端口:区分计算机软件的,总共有65536(216,一个端口占两个字节)个端口,1~1024为系统端口,1025以后可以自行使用,在同一个协议下,端口号不能重复,不同协议下可以重复;确定软件;
  4. 资源定位:URL:统一资源定位符;URI:统一资源;
  5. 数据传输:TCP/UDP协议;TCP(面向连接,安全可靠,效率低下,相当于打电话,两边都有人),UDP(非面向连接,效率高,相当于发短信,一边只管发,不用管另一边是否接收了);数据先封装,然后传输,接收到数据后,先拆封,然后读取解析;
  6. DNS:域名解析;

为了更深层次的了解网络,先来介绍一下我们平时访问网站的过程吧:
网络(一)——网络基础知识_第1张图片
比如要访问的网站为 www.baidu.com,那么计算机首先会去DNS服务器拿到当前域名对应的IP地址(中间的详细过程和后面访问百度服务器的过程差不多,略),比如最终拿到的IP地址是74.31.21.4,那么接下来,计算机的应用程序会包装一份数据,这份数据包括要发送给服务器的信息和相关的协议的头部文件:
网络(一)——网络基础知识_第2张图片
然后它每到一个路由器就会更换数据帧里面的当前MAC地址和下一步的MAC地址,直至最终走到服务器,走到服务器之后,服务器读取请求并返回数据,如果返回的数据比较大的话,会分几次发送给客户端,然后客户端通过相关的协议解析服务端发送的数据,并将其显示到显示器上;
网络(一)——网络基础知识_第3张图片

交换机和路由器的作用和区别:参考;

2、网络分层

OSI:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

OSI网络模型

层次 名称 主要功能
7 应用层 实现具体的应用功能
6 表示层 对应用层的数据进行封装、校验、加密等操作
5 会话层 建立、管理和终止会话
4 传输层 保持通信双方端对端的联系(端口)
3 网络层 在于通信双方主机与主机的联系(IP),分组传输和路由选择
2 数据链路层 物理地址(Mac地址),数据单元(帧),定义了帧的开始和结束,透明传输,差错校验
1 物理层 数据以bit流的形式在通信介质上传输

网络(一)——网络基础知识_第4张图片

注意,A给B发送消息,消息并不是直接发送给B的,大概过程如下;
A ----> (网关) 路由器(A) ----> 基站 —> (网关)路由器(B)—>B

TCP/IP模型
只有四层:

备注 协议 主要设备
应用层 各种应用程序、APP FTP、SMTP、HTTP 、Telnet
传输层 数据单元,数据段 TCP、UDP
网络层 路由器、交换包(数据单元,数据包) IP 三层交换机、路由器
网络接口层 网线 (数据单元,比特 中继器、集线器、网桥、网卡、交换机

局域网是不会用到网络层的设备的;

3、主要协议说明:

协议 说明 端口 备注
FTP 文件传输协议 端 21 减少或消除各操作系统之间处理文件的不兼容性
HTTP 超文本传输协议 80
SMTP 简单邮件协议 25 用于发送邮件
TCP 传输控制协议 提供可靠的连接服务,进行数据传输之前需要建立连接(三次握手),建立连接才能通信,通信结束后断开连接(四次挥手)
UDP 用户数据报协议 发送数据前不需要建立连接
IP 网络互联协议 ipv4/ipv6
ARP 地址解析协议 实现通过IP地址得到物理地址
RARP 逆地址解析协议 实现提供物理地址的到IP地址
ICMP 控制报文协议 TCP/IP协议族的一个子协议 ,用于在IP主机、路由器之间传递控制消息

IP协议:
IPv4、IPv6
表示形式:

  • 点分十进制:127.0.0.1
  • 二进制:00000000 00000000 00000000 00000000
    255.255.255.255

IP地址如何区分如何找:
一部分叫网络标识、一部分叫主机标识;
高n位为网络标识、剩下的低32-n位为主机标识;

A类IP地址,0开头,网络标识占一个字节(还剩7个bit位是网络标识,因为0开头),剩下的3个字节是主机标识;
B类IP地址,10开头,网络标识占2个字节(还剩14位是网络标识,因为10开头),剩下两个字节是主机标识;
C类IP地址,110开头,网络标识占3个字节(还剩22位是网络标识,因为110开头),剩下1个字节是主机标识;
D类IP地址,1110开头,网络标识占4个字节(还剩28位是网络标识,因为1110开头),没有主机标识,一般用于广播;

OSI模型和TCP/IP模型的对比以及相应的协议
网络(一)——网络基础知识_第5张图片

4、TCP UDP的区别

TCP是面向连接的、可靠的、流式服务;
UDP是非面向连接、不可靠、数据报服务;
TCP需要三次握手建立连接后,才可以传输用户数据,可靠性是通过应答机制、超时重传机制保证的,还有滑动窗口来进行流量控制;

实际选择哪种协议,要看需求,比如,视频传输,要求以恒定的速率发送数据,可以用UDP,传输文件,要求可靠性,使用TCP;

TCP报头解析

网络(一)——网络基础知识_第6张图片

  • 16位源端端口号:告知主机该报文段来自哪里(源端口);
  • 16位目的端端口号:上传给哪个上层协议或应用程序(目的端口);
  • 32位序号:一次TCP通信过程中,某一个传输方向上的一系列TCP报文段的编号。第一个报文段的序号值为系统生成的随机值,后续的报文段的序号都是生成的随机值 + 此报文段携带数据的第一个字节在整个字节流中的偏移量,例如:发过来的序号为1500的TCP报文段,数据一共100字节,那么下一个发过来的TCP报文段的第一个字节在整个字节流中的偏移量为(100 + 1),则其序号为:1500 +(100 + 1);
  • 32位确认号:用作对另一方发送过来的TCP报文段的响应。由接收方填充,其值为接收到报文段的序号值 + 1, 对接受到的报文段进行反馈确认。例如:对上面回馈一个1501,表示序号为1500的TCP报文段我已经确认收到了。
  • 4位头部长度(header length):这个字段指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。也就是TCP报文段首部的长度。该字段以4字节为单位,可以表示的最大的数是”1111”,也就是十进制数15,所以IP首部长度最大为60字节(15*4=60)。由于IP首部固定长度为20字节,所以该字段的最小值为”0101”。
  • 位标志位:也就是包的类型,主要用于操控TCP的状态的。这6个标志位分别为URG,ACK,PSH,RST,SYN,FIN。详细信息下面进行介绍。
  • 16位窗口大小:是TCP流量控制的一个手段,这里说的窗口,指的是接收通告窗口。他告诉对方 本端自己的的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度了。
  • 16位校验和:是由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。
  • 16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号,也就是紧急数据后面的,不紧急数据的开头。紧急数据从头开始,到这个紧急指针结束。因此,确切的说,这个字段是紧急指针相对当前序号的偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。
  • 最多40字节的选项部分:做一些控制信息。

补充:6个标志位包含的信息:
URG = 1,指示报文中有紧急数据,应尽快传送(相当于高优先级的数据)。
PSH = 1,接到后尽快交付给接收的应用进程。
RST = 1,TCP连接中出现严重差错(如主机崩溃),必须释放连接,在重新建立连接。
FIN = 1,发送端已完成数据传输,请求释放连接。
SYN = 1,处于TCP连接建立过程。
ACK = 1,确认序号(AN)有效。

UDP报头解析

网络(一)——网络基础知识_第7张图片

  • 源端口号 占16位。标识源主机的端口或进程,同TCP。
  • 目的端口号 占16位。标识要发送个目的主机的哪个端口或进程;
  • 首部长度 占16位。标识UDP整个数据报的长度(包括首部和数据)。最小值为8(仅有首部);
  • 检验和 占16位。检测UDP用户数据报在传输中是否有错,有错就丢掉。检测方式同TCP一样,检验范围也是包括首部和数据。

补充,IP报头解析

网络(一)——网络基础知识_第8张图片

  • 版本 占4位,指IP协议的版本。通信双方使用IP协议的版本必须一致。例:使用IPV4即填4;
  • 首部长度 占4位,顾名思义,这个字段就是标识了IP数据报的首部长度。该字段以4字节为单位,可以表示的最大的数是”1111”,也就是十进制数15,所以IP首部长度最大为60字节(15*4=60)。由于IP首部固定长度为20字节,所以该字段的最小值为”0101”。
  • 区分服务 占8位。有3位优先权字段已经弃用,还有4位TOS字段和1位保留字段(这个保留字段必须置为0)。4位TOS字段分别代表最小延时、最大吞吐量、最高可靠性、最低成本。这四者相互冲突,只能选择一个。
  • 总长度 占16位,表示IP数据报的总长度(包括数据部分)。单位为字节,所以数据报的最大长度为65536字节(2^16-1)。 在这里补充一个知识:最大传输单元MTU。表示某一层上面可以通过的最大的数据包的大小,所以IP数据报的总长度不能超过下面数据链路层的MTU值。 为了不使IP数据报的传输速率降低,规定所以主机和路由器必须能够处理的IP数据报长度不得小于576字节。当数据报长度超过网络所容许的最大传输单元时,就要把过长的数据报进程分片,这时数据报首部中的总长度不是指没有分片前的数据报长度,而是指分片后每一个分片数据报的长度。
  • 标识 占16位,IP软件在存储器中维持一个计数器,每产生一个数据报计数器就加一,并将这个值赋给标识字段。当数据报长度超过网络的MTU要进行分片时这个标识字段的值就会复制到所有的数据报片的标识字段中。为了之后重新组装数据的时候可以分辨哪些数据报之前属于一个数据报的。
  • 标志 占3位。标志虽然占了三位,但目前只有两位有意义,MF:在最低位,MF=1表示后面还有分片的数据报,MF=0表示这已经是所有数据报片中的最后一个了。DF:在中间的一位,DF=1表示不允许分片,DF=0表示允许分片
  • 偏移量 占13位。该字段表示,被分片的数据报,每一个数据报片在原分组的相对位置。也就是说相对于用户数据字段的起点该片从何处开始。 片偏移以8个字节为单位所以每个分片的长度一定是8字节的整数倍
  • 生存时间 占8位,这个字段也就是我们常说的TTL,表示数据报在网络中的寿命,目的是为了防止数据报在传送过程中无限制的在因特网中兜圈子而白白浪费网络资源。TTL的单位是跳数,路由器在转发这个数据报之前就将该数据报的TTL减一,当数据报的TTL被减到0时,就丢弃这个数据报。
  • 协议 占8位。协议字段指出此数据报携带的是哪种协议,这样就可以使目的主机的网络层知道应该将数据部分上交给哪个传输层协议处理。

来看看常见的协议及相应的协议字段值:
在这里插入图片描述

5、java封装的类介绍:

  • 表示地址:InetAddress(封装了IP+DNS)
  • 表示地址+端口:InetSocketAddress(封装了IP+DNS+端口)
  • 资源定位:URL
  • 数据传输:TCP协议下的:①ServerSocket(服务器端)②Socket(客户端);UDP 协议下的:①DatagramSocket ②DatagramPacket;

你可能感兴趣的:(网络)