重要知识点--一文搞懂网络编程脉络

网络编程:使用编程语言实现多台计算机的通信

网络三要素:Ip地址 端口 协议

IP地址和端口能够在广袤的互联网中定位到要通信的程序,协议和数据传输方式规定了如何传输数据,有了这些,两台计算机就可以通信了。

IP地址:网络中每一台计算机的唯一标识,通过IP地址找到指定的计算机

要通信时,计算机将IP地址封装到要发送的数据包中,交给路由器去处理,路由器会找到目标计算机,将数据包传递给它,完成一次单向通信

端口:用于标识进程的逻辑地址,通过端口找到指定进程

一台计算机可以同时提供多种网络服务,例如Web服务、FTP服务(文件传输服务)、SMTP服务(邮箱服务)等,仅有 IP 地址,计算机虽然可以正确接收到数据包,但是却不知道要将数据包交给哪个网络程序来处理。

为了区分不同的网络程序,计算机会为每个网络程序分配一个独一无二的端口号(Port Number)。

端口是一个虚拟的,逻辑上的概念。

在这里插入图片描述

一个进程可以申请很多端口,同时与多个计算机建立链接。

协议(Protocol):定义通信规则

协议就是不同网络设备进行网络通信的约定,通信的双方必须使用同一协议才能通信。协议是一种规范,由计算机组织制定,规定了很多细节,例如,如何建立连接,如何相互识别等。协议必须由计算机软件来实现。

高级网络协议如HTTP协议(用于浏览器)和SMTP协议(用于发送邮件)等建立在TCP协议之上,TCP协议建立在IP协议之上。

协议族(Protocol Family),是一组协议的统称。最常用的协议族:TCP/IP协议族,它包含了 TCP、IP、UDP、Telnet、FTP、SMTP 等上百个互为关联的协议,由于 TCP、IP 是两种常用的底层协议,所以把它们统称为 TCP/IP 协议族。

IPV4:一个32位整数,以字符串表示

IPV6:一个128位整数,是ipv4的升级版

数据传输方式

最常用的两种:SOCK_STREAM 和 SOCK_DGRAM

SOCK_STREAM (TCP编程)SOCK_DGRAM (UDP编程)
面向连接无连接
特性数据可以准确无误地到达另一台计算机
如果丢失,可以重新发送

保证传输数据的完整性,但效率相对较慢
计算机只管传输数据,不管数据校验
数据丢失或损坏无法补救,但效率较高

有可能多种协议使用同一种数据传输方式,所以在 socket 编程中,需要同时指明数据传输方式和协议。

TCP协议:

OSI模型

Open System Interconnection 开放式系统互联

OSI模型的用途:进行数据封装

在这里插入图片描述

在这里插入图片描述

TCP报文格式

TCP Transmission Control Protocol 传输控制协议,一种面向连接的,可靠的,基于字节流的通信协议。传输前要建立连接,传输完毕后还要断开连接。

TCP报文格式:
在这里插入图片描述
在这里插入图片描述

符号说明
b 比特比特位 最小单位
B 字节1个字节占8个比特位
kB1kB = 1024 B
MB1 MB = 1024 kB
GB1 GB = 1024 MB

建立连接时先传输三个数据包,俗称三次握手:

TCP/IP三次握手

三次握手的关键是要确认对方收到了自己的数据包,这个目标就是通过“确认号(Ack)”字段实现的。计算机会记录下自己发送的数据包序号 Seq,待收到对方的数据包后,检测“确认号(Ack)”字段,看Ack = Seq + 1是否成立,如果成立说明对方正确收到了自己的数据包
在这里插入图片描述

TCP/IP四次挥手

建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源,断开连接需要四次握手。
在这里插入图片描述

HTTP协议

Hyper Text Transfer Protocol 超文本传输协议

是一个属于应用层的面相对象的协议,适用于分布式超媒体信息系统

工作于Client-Server架构上。

HTTP协议特性
  1. 基于TCP/IP协议
  2. 基于请求-响应模式 一定是客户端先发起请求
  3. 无状态保存 stateless
  4. 无连接 每次连接只处理一个请求

HTTP的请求协议

浏览器发送数据到服务器需要遵守的请求协议

HTTP报文:用于协议交互
在这里插入图片描述

GET请求与POST请求

GET请求POST请求
提交的数据会放在URL之后,以?分割URL和传输数据, 参数之间以&相连提交的数据放在HTTP包的请求体中
提交的数据大小有限制(因为浏览器对URL的长度有限制)提交的数据大小没有限制

服务器发送数据到浏览器需要遵守的响应协议

在这里插入图片描述

响应状态码:1XX 正在处理 2XX 成功 3XX重定向 4XX 客户端错误 5XX服务器错误
200:请求成功
201:创建成功
301:永久重定向
302:暂时重定向
401:请求无权限
403:得到授权(与401错误相对),但是访问是被禁止
404:请求路径不存在
405:请求方法不存在
500:服务器异常
502:错误的网关,上游服务器响应无效
504:网关超时,上游服务器无响应

Socket:

在这里插入图片描述
同一个端口,被一个Socket绑定了以后,就不能被别的Socket绑定了

部分内容参考:
http://www.yuan316.com/
https://www.liaoxuefeng.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值