网络编程知识

这篇具有很好参考价值的文章主要介绍了网络编程知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网络编程知识

一.网络七层模型

OSI模型:

        OSI 模型(Open System Interconnection model)是一个由国际标准化组织􏰁提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。
    它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准—— TCP / IP 协议(族)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-No810uUq-1690518028857)(C:\Users\xie19\Pictures\Camera Roll\屏幕截图 2023-07-13 121801.png)]

由上至下,对七个层的应用做简单的介绍:

应用层:规定数据的传输协议

常见的应用层协议:

协议 端口 说明
HTTP 80 超文本传输协议
HTTPS 443 HTTP+SSL,HTTP的安全版
FTP 20,21,990 文本传输协议
telnet 23 远程终端协议
表示层:应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;

EG: 解决不同系统之间的通信,比如Linux下的QQ和Windows下的QQ可以通信

会话层:

建立一个连接(自动的手机信息、自动的网络寻址)

传输层:

每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/IP)协议;

网络层:

此处需要确定计算机的位置,怎么确定?IPv4,IPv6!

网络链路层

规定了0和1的分包形式,确定了网络数据包的形式;

物理层

物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输

下面的图表显示了常见的不同的TCP/IP和其他的协议在最初OSI模型中的位置

协议 位置
HTTP、FTP、 telnet、 SIP、 SSH 应用层
NCP、AFP 表示层
SSH、BSD socket 会话层
TCP、UDP 传输层
IP 网络层
以太网 数据链路层
光纤、无线电 物理层

由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定。

二、三次握手

1.第一次握手

客户端发送 SYN 包( syn = j )到服务器,并进入 SYN_SEND 状态,等待服务器确认。

j 是一个随机数,通过看服务器返回的 j + 1 是否正确,判断第一次握手服务器是否正确响应

2.第二次握手

服务器确认客户的 SYN 包,同时发送 ACK 包( ack = j + 1 )作为回应;

自己也发送一个 SYN 包( syn = k ),共两个包,此时服务器进入 **SYN_RECV**** 状态;

k 也是一个随机数,也是用于看客户端返回的 k+1 是否正确,判断第二次握手客户端是否正确响应。

3.第三次握手

客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK ( ack = k + 1 ),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

三、socket,http,TCP

有一篇博文写的很好

http://t.csdn.cn/N50wA

四、http协议

1.http协议得特性

http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080

http协议的的特点是无状态短连接

2.http协议得请求

利用抓包工具httpwatch可以获取报文,多见于前端,后端用于分析数据传输过程中产生的问题 

http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分:

请求行

  1.  浏览器向服务器发送的,在第一行,包含:
     .请求方式(GET请求、POST请求)
     .url(网址)
     .http协议版本
    

GET请求

例如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p8HwCbBK-1690518028859)(C:\Users\xie19\Pictures\Camera Roll\18902323239.png)]

请求方式是GET请求,url 携带的参数可见,http协议版本是1.1

POST请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0qXbmnj-1690518028859)(C:\Users\xie19\Pictures\Camera Roll\555555.png)]

请求方式为POST请求,url携带的参数不可见,协议版本是1.1

3.POST与GET的区别

1.本质区别

GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应200(返回数据);
对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送 data,服务器响应200 ok(返回数据)。

200,一般以2开头的为成功,以4开头是失败
2.具体区别
2.1.url的参数是否可见

get请求:url携带的参数可见

var url = 'http://192.168.1.40:8080/v1/sea?page=1&per_page=10' + 'search=' + escape(str)

post请求:url 携带的参数不可见(参数被隐藏,可以通过抓包)

2.2参数传递方式

get,通过请求行拼接url进行传递参数

post,通过请求主体传输参数

3.缓存性

get 请求是可以缓存的

post 请求不可以缓存

4.页面后退的反应

get 请求页面后退时,不产生影响(因为有缓存)

post 请求页面后退时,会重新提交请求(没有缓存)

5.传输数据的大小

get 一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)

post 请求传输数据的大小根据 php.ini 配置文件设定,也可以无限大

6.安全性

这个也是最不好分析的,原则上 post 肯定要比 get 安全,毕竟传输参数时 url 不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,对传递的参数进行加密,其实都一样。

7.请求头

浏览器向服务器发送一些状态数据,标识数据等等

一个信息一行,包括信息名:信息值,按行分隔。

User-Agent: firefox//表示发送请求的浏览器(请求代理端)是firefox
Host: shop.100.com//表示请求的主机域名(基于域名的虚拟主机就是靠这个头判断的)
Cookie:name=itcast//浏览器携带的cookie数据。
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

注意,请求头信息,需要使用一个空行结束!

8.请求主体

请求代理端向服务器端,发送的请求数据!

典型的就是POST形式发送的表单数据

get请求,没有请求主体部分!get数据是在请求行中的url上进行传递的!

4.http协议的响应

HTTP/1.1 200 ok
Date: Tue,19 Nov 2013 03:08:55 GMT
Server: Apache/2. 2.22 (Win32) PHP/5.3. 13
X- -Powered -By: PHP/5. 3.13
Content-Length: 16
Content- Type: text/html

响应行:

响应行包括:协议版本、状态码、状态消息。典型的:

(以1开头)1xx:消息
(以2开头)2xx:成功
(以3开头)3xx:请求被重定向
(以4开头)4xx:浏览器端错误
(以5开头)5xx:服务器端错误

响应头:

Date:响应的时间。GMT时间!
Content-Length: 响应主体数据的长度!
Content-Type: text/html :内容类型:告知浏览器接下来发送的响应主体数据是什么格式!

响应主体

主要的响应数据,在浏览器的主体区域显示的数据都是相应主体!(前端人员通过html和css技术实现的排版,对于C语言来说拿到的就是一段ASCII码、一段字符串)

注意,每行,包括响应行和响应头,都需要一个 r\n 结尾

五、HTTPS协议

1.简介与原理

http协议是明文传输的,因此很容易被截取和解析,泄漏个人数据。https协议是在 http 和 tcp 之间多添加了一层加密SSL,进行身份验证和数据加密。

2、密码学基础

明文与密文

明文: 明文指的是未被加密过的原始数据。
密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。

密钥

密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。

​ 密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。

对称加密(私钥+私钥)

*对称加密*:对称加密又叫做私钥加密,即信息的发送方和接收方使用****同一个密钥****去加密和解密数据。

​ 对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有****DES*、3DES、TDEA、Blowfish、*RC5****和IDEA。

其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下    : 密文 + 解密算法 + 私钥 => 明文

对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。

    其加密过程中的私钥与解密过程中用到的私钥是同一个密钥,这也是称加密之所以称之为“对称”的原因。

由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难。

非对称加密(公钥+私钥)

*非对称加密*:非对称加密也叫做公钥加密

非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。

(1)被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
(2)被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文

由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。

非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

在非对称加密中使用的主要算法有:*RSA*、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。

这些算法不用亲自去写,已经成为一种标准,有现成的库去调用实现即可。

六.HTTPS相对于HTTP优缺点

优点:正确率更高,安全性更强
使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 ;

HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性 。

HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本 。

缺点:效率低,成本高
相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。

HTTPS 协议还会影响缓存,增加数据开销和功耗 。

HTTPS 协议的安全是有范围 中间人攻击 伪造证书文章来源地址https://www.toymoban.com/news/detail-616432.html

http:安全系数不高,但是效率高,成本低

HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 ;

HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性 。

HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本 。

缺点:效率低,成本高
相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。

HTTPS 协议还会影响缓存,增加数据开销和功耗 。

HTTPS 协议的安全是有范围 中间人攻击 伪造证书

http:安全系数不高,但是效率高,成本低

到了这里,关于网络编程知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络编程知识整理

    目录 1.1 引言 1.2 分层 1.3 TCP/IP的分层 1.4 互联网的地址 1.5 域名服务 1.6 封装 1.7 分用 1.8 端口号 1.1 引言         很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P协议族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远

    2024年02月22日
    浏览(34)
  • 学习网络编程No.1【网络基础知识】

    北京时间:2023/8/4/22:40,天苍苍野茫茫,风吹造地见牛羊,此时心潮澎湃,非常开心,啊哈哈哈!因为就在刚刚我们终于把系统编程方面的知识给学完了,啊哈哈哈!真是功夫不负有心人呀!呜呜呜,仰天而泣,算了,不能发神经,哈哈!今天把最后一节有关多线程知识的课

    2024年02月14日
    浏览(57)
  • Linux网络编程(一-网络相关知识点)

    目录    一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封  三、IP协议 3.1 MAC地址  3.2 IP地址 3.3 MAC地址与IP地址区别 互联网通信的本质是数字通信,任何数字通信都离不开通信协议的制定,通信设备只有按照约定

    2024年01月24日
    浏览(37)
  • 网络编程套接字 | 预备知识

    在之后的文章中我们将来讲解网络编程中的相关知识点,再本文中我们首先来讲解一下网络编程中的预备知识: 在IP数据包中有两个IP地址分别是源IP地址和目的IP地址,此时这里就会出现一个问题就是:如果我们光有IP地址,是无法完成通信的。有了IP地址只能够将消息发送到

    2024年02月09日
    浏览(50)
  • 网络基础知识&socket编程

    Linux 系统是依靠互联网平台迅速发展起来的,所以它具有强大的网络功能支持,也是Linux 系统的一大特点。互联网对人类社会产生了巨大影响,它几乎改变了人们生活的方方面面,可见互联网对人类社会的重要性! 本章我们便来学习一些网络基础知识,如果感兴趣的读者可以

    2024年02月10日
    浏览(46)
  • 【Linux网络】网络编程套接字(预备知识+UDP)

    目录 预备知识 1. 理解源IP地址和目的IP地址 2. 理解源MAC地址和目的MAC地址 3. 认识端口号  4. 理解源端口号和目的端口号 5. 端口号(port) vs 进程pid 6. 认识TCP协议和认识UDP协议 7. 网络字节序 socket编程接口  1. socket 常见API 2. sockaddr结构  简单的UDP网络程序  1. 服务端创建udp

    2024年02月19日
    浏览(58)
  • 一、网络编程之基础知识详解

    引言: 初学网络编程时会涉及到许多网络基础知识,这些知识点比较零碎,本文希望系统总结一次,以便在后续的学习和工作中能够快速查阅。 网络分层模型 OSI 七层模型 OSI 模型,也叫做七层模型, OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。 OSI 模型是

    2024年02月09日
    浏览(58)
  • 《Java SE》网络编程基础知识归纳。

    目录 一、网络基本介绍 1、什么是网络通信? 2、网络 3、IP地址 4、域名 5、网络通信协议 6、Socket 二、TCP网络通信编程  1、应用实例1(字节流) 2、应用实例2(字节流) 3、应用实例3(字符流) 4、netstat 指令 三、UDP网络通信编程  1、基本介绍 2、基本流程 3、应用实例  

    2024年01月20日
    浏览(54)
  • C语言之网络编程(必背知识点)

    网络的来历_百度知道 ARPnetA--Internet--移动互联网--物联网 局域网(LAN) 局域网的缩写是LAN,local area network,顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在路由器上,可以互

    2024年02月06日
    浏览(80)
  • 【网络编程知识】什么是Socket?概念及原理分析

    先来看一下 百度百科 介绍 套接字(Socket) ,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包