网络编程

一、客户端/服务端架构

1、CS架构

Client---------网络------------Server
客户机--------网络------------服务器

  • 建立在局域网(专用的网络)
  • 面向相对固定的用户群,信息安全高
  • 更注重流程,可以对权限多层次校验,系统运行速度快

2、BS架构

Browser--------网络------------Server
客户机----------网络------------服务器

  • 建立在广域网
  • 在浏览器上就可以使用,实现多客户访问的目的,交互性较强
  • 无序升级客户端,只需升级服务器即可

3、网络

网络是什么=底层的物理连接介质+互联网通信协议

网络存在的意义=》通信

4、OSI七层协议

1)应用层

应用层功能:规定应用程序的数据格式

用户使用的都是应用程序,均工作于应用层

2)传输层:TCP或者udp协议

传输层功能:建立端口到端口的通信(端口范围0-65535,0-1023为系统占用端口)

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
tcp协议:(下面有详解)
1.可靠传输
TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
2.不可靠传输
'报头'部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

3)网络层

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

1.ip协议
  • 每台计算机都必须要有一个ip地址和子网掩码(子网地址)
  • 子网掩码+ip地址=局域网地址
  • 规定网络地址的协议叫ip地址,ipv4是ip地址不够用
  • IP地址=为了标识计算机在哪个局域网(子网)内
    • head:长20-60字节
      • 点分隔开32位十进制数
    • data:最长65515字节
      • 00000000.00000000.00000000.00000000 = >0.0.0.0
      • 11111111.11111111.11111111.11111111 => 255.255.255.255
2.ip地址分成两部分
  • 网络部分:标识子网
  • 主机部分:标识主机

注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网

3.子网掩码
子网掩码:表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。

比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
4.IP数据包
ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

head:长度为20到60字节

data:最长为65,515字节。

而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了
5.ARP协议

arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议

4)数据链路层

数据链路层的功能:定义了电信号的分组方式

数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
1.以太网协议
早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet
2.ethernet规定
一组电信号构成一个数据包,叫做‘帧’,每一数据帧分成:报头head和数据data两部分

head包含:(固定18个字节)
- 发送者/源地址,6个字节
- 接收者/目标地址,6个字节
- 数据类型,6个字节
data包含:(最短46字节,最长1500字节)
3.数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
4.mac地址
head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

5)举例:

IP地址:192.168.11.186

转换成二进制:11000000.10101000.00001011.10111010


子网掩码:255.255.255.0

转换成二进制:

11111111.11111111.11111111.00000000


子网地址 = IP地址 and 子网掩码

11000000.10101000.00001011.00000000

转换成十进制,子网地址:192.168.11.0

数据包 = 打ip头

在局域网内一定要知道ip地址,但是靠mac地址通信

ARP:地址解析协议:把ip解析成mac地址,用来在子网内部通信

1、先知道对方ip地址和子网掩码,与自己的做对比,相同在一个局域网内。

2、先封装一个包,在网络层打包ip头,在数据链路层打包mac头,源mac地址填自己的,对方填F.F.F.F

  • mac地址 =为了表示计算机在哪个子网内

数据链路层:ethernet以太网(计算机为什么会有网卡,mac地址是什么,ip地址)

早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

ethernet规定:

  • 一组电信号 = 数据帧
  • 每一数据帧分成:
    • 报头head:固定18个字节
      • 发送者/源地址:6字节
      • 接收者/目标地址:6字节
      • 数据类型:6字节
    • 数据data:46字节-1500字节
      • 数据包的具体内容
      • head长度+data长度 = 最短64字节,最长1518字节,超过最大限制就分片发送
mac地址:

网卡上的mac地址:12位16进制数组成:前6位是厂商地址,后六位是流水线地址

eth网卡

4)物理层:把数据链路层发过来的数据转换成电信号(二进制:10)

ARP:把ip解析成mac地址,用来在子网内部通信


一个非常重要的结论:
    ip+port+mac=》全世界范围内独一无二的一个基于网络通信的软件
    ip+port》全世界范围内独一无二的一个基于网络通信的软件

二、TCP协议详解(可靠协议)

1、三次握手建立双向链接

三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

客户端:男生 服务端:女生

  • 第一次握手:客户端发送网络包,服务端收到了。 这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。(男生发送请求建立(交往)联系的信息)

  • 第二次握手:服务端发包,客户端收到了。 这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。(女生收到信息,回信)

  • 第三次握手:客户端发包,服务端收到了。 这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。(男生收到回信,两者正常交往)

2、四次挥手断开连接

建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的)。这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务器均可主动发起挥手动作。
  • 第一次挥手:客户端发送连接释放请求,并停止在发送数据,主动关闭TCP连接,进入终止等待状态1,等待服务端的确认。(男生请求终止交往,向女生发送请求等待女生回应。)
  • 第二次挥手:服务端收到请求后,发出确认关闭的文报,此时TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认文报后,进入种终止等待状态2,等待服务端发出的连接释放的报文段(女生确认分手,并回复确认分手,并准备发送断开连接文段,此时二者关系貌合神离,男生等待断开联系文段)
  • 第三次挥手:服务端发出连接释放报文段,服务端进入最后确认状态,等待客户端的确认。(女生发送断开联系文段,等待男生确认。)
  • 第四次挥手:客户端收到连接释放报文段后,对此发出确认报文段客户端进入时间等待状态,客户端收到报文后,就关闭连接了,处于Close状态。(男生收到断开联系文段,并回复已收到,女生收到后关闭连接)
    在这里插入图片描述

三、上网的整个流程

1、实现上网需具备的四要素

  • 本机的IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址

2、获取四要素的两种方式

  • 静态获取:手动配置
  • 动态获取:dhcp获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值