【Linux】网络基础

目录

 

一. 实现网络通信需要哪些支持

1.通信设备

2.通信协议

二. 协议栈

1.分层的好处/为什么要分层?

2.分层的作用

3.各层作用

(1)物理层

(2)数据链路层

(3)网路层

(4)传输层

(5)会话层

(6)表示层

(7)应用层

三. IP地址

1.IP地址

2.公网IP(广域网通信)

3.私网IP(局域网通信)

4.如何解决IP地址慌?

5.子网掩码的作用

6.DNS协议:域名解析

7.ARP协议

四. TCP协议:传输控制协议

1.特点

2.TCP的报文段格式

(1)端口号

(2)序列号seq(随机生成)

(3)TCP标识位

(4)滑动窗口机制

(5)检验方式

(6)数据大小

3.如何连接

(1)建立连接:三次握手

(2)断开连接:四次挥手

(3)为什么是三次握手和四次挥手?

(4)dos、ddos攻击

4.如何保证可靠有序的传输

五. UDP协议:用户数据报协议

1.特点

2.UDP报文格式

3.协议特点

六. TCP与UDP


一. 实现网络通信需要哪些支持

1.通信设备

  • 网卡:PC机自带
  • 路由器,交换机
  • 光纤、电缆、基站

2.通信协议

  • 操作系统自带协议栈;(Linux的特点:丰富的网络协议)
  • 裸机开发需要独立的协议栈

 

二. 协议栈

物理层是第一层。在上面的是上面一层,在下面的是下面一层。

哪个协议在哪一层:FTP,NFS    /    SMTP(邮件协议),DNS   /   TCP,UDP   /     IP,ARP,RARP    /      IEEE(以太网协议)

1.分层的好处/为什么要分层?

  • 各层之间是独立的
  • 灵活性好
  • 结构上可分隔开
  • 易于实现和维护
  • 能促进标准化工作

使每一层协议能复用,并得到更好的维护

2.分层的作用

协议栈实现数据的压缩加密和解压解密

没一层都会加相应的数据,到最后加完了一起发给别人,别人再一层层消减数据。

3.各层作用

(1)物理层

传输比特流,将比特流(强弱电流)和数字信号(二进制0101)相互转化

(2)数据链路层

负责在两个相邻的节点之间准确的传输数据,实现局域网通信。局域网是通过mac地址(物理网卡)通信的(192.168.1.177是局域网IP)

(3)网路层

生成IP地址,选择合适的路由,正确的找到目的站(通过公网IP访问全世界,公网IP每天看不一样的)

(4)传输层

负责两个主机之间的端对端的数据连接&传输,定义了一些传输数据的协议和端口号。TCP(可靠,速度慢),UDP(不可靠,速度快),端口(让不同的应用程序同时使用网络)

(5)会话层

负责在不同的PC的不同进程之间建立或者拆除连接

(6)表示层

发送数据的格式,不同的pc机拥有不同的编码方式,需要在这里进行转换,转换成网络通信中采用的标准表现形式

(7)应用层

为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

 

三. IP地址

1.IP地址

可以通过IP地址找到一台机器,端口号找到这台机器上与之通信的软件

实际上是32位二进制数   (01100100.00000100.00000101.00000110)100.4.5.6

0.0.0.0 - 255.255.255.255

2.公网IP(广域网通信)

用来做世界任意两台电脑之间的通信

  • a类 1.0.0.1 —126.255.255.254
  • 127.x.x.x都是环回地址,比如127.0.0.1不属于任何一个有类别地址类,它代表设备的本地虚拟接口,你可以ping 127.0.0.1来测试网卡是否是好的
  • b类 128.0.0.1—191.255.255.254
  • c类 192.0.0.1—223.255.255.254
  • d类 224.0.0.1—239.255.255.254组播,VRRP协议,keepalive高可用
  • e类 240.0.0.1—255.255.255.254 科研

3.私网IP(局域网通信)

不能随便乱设!一定要在下面范围内

  • A 10.0.0.0~10.255.255.255
  • B 172.16.0.0~172.31.255.255
  • C 192.168.0.0~192.168.255.255

4.如何解决IP地址慌?

  • ipv4升级到ipv6(32位升级到128位)(但成本太高,全世界都要换硬件等)
  • 网络地址转换NAT(Network Address Translation):将内网ip转为公网ip(根据内网看哪个公网可以用,让公网给你分配个可以用的)

5.子网掩码的作用

  • 决定一个网段的大小(可用ip的数量)(子网掩码位数不一定要是8的倍数)
    • 192.168.11.0/24  ===》 192.168.11.0   netmask 255.255.255.0
      192.168.11.0    网络号
      192.168.11.1    起始地址
      192.168.11.254  结束地址
      192.168.11.255  广播地址
    • 相当于256 - 2 = 254个可用IP
  • 同一个网段的ip地址,才能直接相互通信,不同网段的ip地址,需要路由器才能相互通信!

6.DNS协议:域名解析

把域名解析成ip地址(www.baidu.com就是域名)

公网IP一直在变,让域名和动态IP改变,这样IP一变,域名就会重新绑定,通过一直不变的域名可以访问你想要访问的地方。

7.ARP协议

把ip地址解析成mac地址(物理地址,全球唯一)(局域网通信必须通过MAC地址)

四. TCP协议:传输控制协议

1.特点

面向连接、可靠的字节流传输

2.TCP的报文段格式

(1)端口号

  • 端口号的作用:确定和机器上哪个应用程序通信(指定80端口号,即用HTTP通信)
  • 端口号的取值范围
    •   
    • 注明端口号不能占!
    • 一般都在动态端口号里面选
  • 特殊端口号
    • 端口:21    服务:FTP 
    • 端口:22    服务:Ssh 
    • 端口:53    服务:Domain Name Server(DNS) 
    • 端口:80    服务:HTTP 

(2)序列号seq(随机生成)

拆包时保证数据不紊乱

(3)TCP标识位

表示这个发的包是干什么的

  • SYN:建立链接
  • ACK:回应标识
  • FIN: 断开链接
  • PSH: 数据包
  • URG:  紧急指针
  • RST : 重置(重传)

(4)滑动窗口机制

一种缓冲机制,先把数据全都放到滑动窗口里面,然后一点一点发。当网络不好时,会降速,压缩数据。根据网速带宽的大小,网络的快慢分解数据包,把数据包分解为适应这样网速带宽。

(5)检验方式

目的:保证数据做到正确传输

UDP实现正确传输可以依靠下面的方式(知识面广度,优缺点)

  • 奇偶校验Parity Check
  • bcc异或校验法(block check character) 
  • crc循环冗余校验(Cyclic Redundancy Check)
  • md5校验和数字签名
  • 海明码校验

(6)数据大小

  • 局域网的链路层传输数据的最大长度是1518bit,包括帧的头尾部长度18bit(头14+尾4),IP头部长度为20bit,TCP头尾部长度为20bit,UDP头尾部长度为8bit
  • TCP在局域网中传输数据的最长长度=1518-18-20-20 = 1460bit
  • 广域网传输不限定大小,因为超过限定大小,会进行拆包发送

3.如何连接

(1)建立连接:三次握手

记录对方的ip和端口,正式通信时会自动的使用记录的ip和端口

  1. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手 

简述:客户端发起连接,先发一个SYN包,发送一个连接请求,再发一个序列号seq,保证我收到的是我想要连接的机器给我回复的包。服务器回复一个ACK包,表示已经建立和客户端的读写通道,再发一个SYN包,跟客户端建立连接,双发建立连接后,客户端再回一个ACK包。

三次握手缺点:容易被攻击

  • dos攻击:不断给服务器发SYN包(连接请求),接着忽略服务器发回的ack包。让服务器不断等待客户端,达到负载
  • 解决:等一段时间没有回应,就不再等待,断开连接。或忽略一直给自己发请求的IP。
  • ddos攻击:开源破解软件,让下载软件的客户端向服务器发SYN包。

(2)断开连接:四次挥手

  1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

简述:客户端发一个FIN包请求断开连接,服务器回一个ACK包断开客户端项服务器的连接。服务器再发一个FIN请求断开连接,同时要发一个ACK包确定对方是之前跟自己断开连接的客户端,客户端再回一个ACK包确定断开连接。

(3)为什么是三次握手和四次挥手?

(4)dos、ddos攻击

4.如何保证可靠有序的传输

  • 三次握手建立连接
  • 拆包时SYN的设置确保了包的顺序正确
  • 通过校验机制确保发送数据的准确
  • 应答机制,也就是将数据发送给对方后,对方必须应答是否发送成功
  • 使用“滑动窗口”机制,根据网络的好坏,控制发送的分组数据的大小

 

五. UDP协议:用户数据报协议

1.特点

无连接不可靠传输

2.UDP报文格式

  • 局域网:UDP传输数据的最长长度 = 1518 - 18 -20 - 8 =1472bit
  • 广域网:用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535- IP头(20) - UDP头(8)=65507字节。用sendto函数发送数据时,如果发送数据长度大于该值,则函数会返回错误 

3.协议特点

  • 无连接的:发送数据之前不需要建立连接,减少了开销和发送数据之前的延时。(时效性比FTP协议好)
    • 视频用UDP传,QQ消息也用UDP传(因为快,即使),文件传输用TCP传
  • 尽最大努力交付:不保证可靠的交付,主机不需要维持复杂的链接状态表。
  • 面向报文的:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
  • 没有拥堵控制(发完就收发完就收,不会堵塞)
  • 支持一对一、多对一和多对多的交互通信(TCP只能一对一)

 

六. TCP与UDP

传输方式:面向报文(发的报文格式)

首部开销:就是报文格式在数据前面加的东西

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值