C#高级编程--通信协议
数据链路层三大问题
1、封装成帧:透明传输
2、差错检测:奇偶校验、循环冗余校验CRC
3、可靠传输:停止等待协议SW、回退N帧协议GBN、选择重传协议SR
IP地址=网络号+主机号;
主机地址=IP地址+ Port端口号;
IP地址
是因特网上的主机和路由器使用的地址,用来标识:
- 网络编号:表示因特网的网络;
- 主机编号:表示同一网络上的不同主机;
单播MAC地址:附带接收方mac地址,与主机进行匹配;
广播MAC地址:使用FF-FF-FF-FF-FF-FF,主机都能收到;
多播MAC地址:MAC第一字节【xx】第二个x不能整除2即为多播地址,在发送多播帧时,主机会查看与自己的多播组列表是否有匹配;
标准表示法:xx-xx-xx-xx-xx-xx
其他表示法:xx:xx:xx:xx:xx:xx | xxxx.xxxx.xxxx
【MAC地址(数据链路层)】是以太网的MAC子层所使用的地址;
【IP地址(网际层)】是TCP/IP体系结构网际层所使用的地址;
【ARP协议(网际层)】属于TCP/IP体系结构的网际层,其作用是已知IP地址,获取MAC地址;
MAC媒体接入控制(Media Access Control, MAC)协议,这些MAC协议从信道获取的策略方面可分为调度接入型、同步竞争接入型和异步竞争接入型。
retransmit英[ri:trænz'mɪt] 美[ritrænz'mɪt]n. 转播,转发,中继站发送
congestion英[kənˈdʒestʃən] 美[kənˈdʒestʃən]n. 拥挤,堵车;阻塞;
DL层可靠传输协议: l 停止等待协议=SW=Stop and Wait l 后/回退N帧协议=GBN=Go Back N l 选择重传协议=SR=Select and Retransmit |
TCP拥塞控制 l 慢开始slow start; l 避免拥塞congestion avoidance; l 快重传fast retransmit; l 快恢复fast recovery; |
解决流水线的差错恢复有两种基本方法(滑动窗口协议):
1.回退N步(Go-Back-N,GBN):回退N步,接收方则是只接受最小的未接受帧,对错序到达帧,都丢弃
2.选择重传(selective repeat,SR):只重传丢失的帧,乱序到达的帧缓存起来
滑动窗口协议(Sliding-window protocol)主要有两类协议:
GBN(go-Back-N,回退N重传协议), SR(selective repeat,选择重传协议)
PPP点对点协议(Point to Point Protocol,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即 SLIP。
redundancy英[rɪˈdʌndənsi] 美[rɪˈdʌndənsi]n. 过多,过剩;冗长;裁员;(机器的)多余度
cyclic英[ˈsaɪklɪk] 美[ˈsaɪklɪk, ˈsɪklɪk]adj. 周期的,循环的;轮转的
CRC循环冗余校验=Cyclic Redundancy Check;
【透明传输】:数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
MTU,太大无法发送,太小不经济;网络层(IP层)进行分片;
MTU 最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。
是包或帧的最大长度,一般以字节记。如果MTU过大,在碰到路由器时会被拒绝转发,因为它不能处理过大的包。如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。大部分操作系统会提供给用户一个默认值,该值一般对用户是比较合适的。
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500字节和1492字节。链路层的这个特性称为MTU,即最大传输单元。不同类型网络的数帧长度大多数都有一个上限。如果IP层有一个数据报要传,而且数据帧的长度比链路层的MTU还大,那么IP层就需要进行分片( fragmentation),即把数据报分成干片,这样每一片就都小于MTU;
传输层:不同进程间的通讯;
网络层:不同网络间的通信;
数据链路层:同一网络内不同计算机通信;
MTU: Maximum Transmission Unit 最大传输单元(意义多用在网际互联时,链路层承载网的不同,比如以太网、PPP、老的SLIP,一般是最大的数据帧除去链路层报头和网络层报头的字节数)
MSS: Maximum Segment Size 最大分节大小(Segment是TCP的PDU,MSS用于向对端TCP通告对端在每个分节中能够发送的最大TCP数据量,一般是MTU除去TCP报头的字节数)
PPPoE: PPP Over Ethernet(在以太网上承载PPP协议)
DNS:域名→IP;
ARP:IP→MAC;
RARP:MAC→IP;
PDU协议数据单元长度、MTU最大传输单元
|
报文长度MTU |
头部长度 |
HTTP(应用层) |
长度不限 |
不限 |
TCP(传输层)Port进程 |
长度不限 |
20-60字节 |
IP(网络层)IP寻址 |
65535字节 |
20-60字节 |
帧(数据链路层)MAC寻址 |
最小46字节 1500字节(以太网) 1512字节(以太网V2) 1492字节(802.3) 1522字节(插入VLAN后802.1Q帧) 576字节(广域网) |
以太网V2 MAC帧18字节 PPP帧7字节 插入VLAN后802.1Q帧 20字节 |
|
|
|
TCP报文
数据偏移=头部长度,以4字节为单位;
最小20字节(0101*4=5*4=20),最大60字节(1111*4=15*4=60);
如果不是4字节整数倍,用填充字段填充0;
URG=urgent=紧急的数据;
ACK=acknowledge=确认已经收到的数据;
PSH=push=尽快上交数据到应用进程;
RST=reset=复位TCP连接,连接异常→释放连接→重新连接;
SYN=synchronize=创建TCP连接时保持同步;
FIN=finish=结束连接;
域名服务器分类*4
根域名服务器 |
最高层次的域名服务器; 每个根域名服务器都知道所有顶级域名服务器的域名和IP; 因特网上共有13个根域名服务器,其中每个服务器都是分布在世界各地的许多计算机构成的服务器集群; 根域名服务器通常不直接对域名进行解析,而是返回对应的顶级域名服务器的地址; |
顶级域名服务器 |
负责管理在该顶级域名服务器注册的所有二级域名; |
权限域名服务器 |
管理某个区的域名,并知道其下级域名服务器的地址; |
本地域名服务器 |
不属于上述域名服务器等级结构; 本地域名服务器起着代理的作用看,将DNS报文转发到上述域名服务器中; 有时也称为默认域名服务器,距离用户较劲,一般不超过几个路由器的距离; |
域名系统DNS=Domain Name System
域名解析方式:递归查询、迭代查询;
动态主机配置协议DHCP;
HTTP1.0采用非持续连接,浏览器每次请求一个文件,都要与服务器重新建立TCP连接;每请求一个文件就要有两倍的RTT开销;
HTTP1.1采用持续性连接,可以在一次连接中连续发送多个文件;
HTTP响应报文状态码,5类,共53种
1**(3种) |
信息 |
例如收到请求或请求正在处理 |
2**(8种) |
成功 |
例如接受了或者知道了 |
3**(8种) |
重定向 |
要完成请求还要采取进一步行动 |
4**(24种) |
客户端错误 |
例如请求语法错误或者不能完成 |
5**(10种) |
服务器错误 |
服务器失效或无法完成请求 |
HTTP报文是面向文本的,其中每一个字段都是ASCII码,并且每个字段长度不定;
使用Cookie在服务器上记录用户信息
早期的万维网应用非常简单,仅仅查看服务器上各种静态文档,因此HTTP被设计为无状态协议,这样可以简化服务器设计;
现在,用户可以通过万维网实现各种复杂应用,往往需要万维网能够识别用户;
Cookie提供了一种机制,使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息;
也就是说,Cookie是一种对无状态HTTP进行状态化的技术;
为用户生成一个唯一的Cookie识别码,并以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息;
RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
cryptography美[krɪpˈtɑɡrəfi]英[krɪpˈtɒɡrəfi]n.密码学
X509Certificate 类
命名空间:System.Security.Cryptography.X509Certificates
程序集:System.Security.Cryptography.dll
提供帮助你使用 X.509 v.3 证书的方法。
"HTTP/1.1 200 OK\r\nServer: nginx\r\nDate: Wed, 19 Apr 2023 02:10:55 GMT\r\nContent-Type: application/octet-stream\r\nContent-Length: 0\r\nConnection: keep-alive\r\n\r\n"
"GET /api/toolbox/geturl.php?h=DD32758B15D72D7DD2D86624CB08BCC6&v=13.2.0.6899&r=6990__sogou_pinyin_Release_13.2.0.6899_6990 HTTP/1.1\r\nUser-Agent: SOGOU_UPDATER\r\nHost: config.pinyin.sogou.com\r\nAccept: */*\r\n\r\n"
/ * % + - →左移位<< 右移位>> → 按位与& 按位异或^ 按位或| → &&逻辑与||逻辑或
C# 中运算符的优先级顺序:
优先级 |
运算符 |
名称或含义 |
使用形式 |
结合方向 |
说明 |
1 |
[] |
数组下标 |
数组名[整型表达式] |
左到右 |
|
() |
圆括号 |
(表达式)/函数名(形参表) |
|
||
. |
成员选择(对象) |
对象.成员名 |
|
||
-> |
成员选择(指针) |
对象指针->成员名 |
|
||
2 |
- |
负号运算符 |
-表达式 |
右到左 |
单目运算符 |
(type) |
强制类型转换 |
(数据类型)表达式 |
|
||
++ |
自增运算符 |
++变量名/变量名++ |
单目运算符 |
||
-- |
自减运算符 |
--变量名/变量名-- |
单目运算符 |
||
* |
取值运算符 |
*指针表达式 |
单目运算符 |
||
& |
取地址运算符 |
&左值表达式 |
单目运算符 |
||
! |
逻辑非运算符 |
!表达式 |
单目运算符 |
||
~ |
按位取反运算符 |
~表达式 |
单目运算符 |
||
sizeof |
长度运算符 |
sizeof表达式/sizeof(类型) |
|
||
3 |
/ |
除 |
表达式/表达式 |
左到右 |
双目运算符 |
* |
乘 |
表达式*表达式 |
双目运算符 |
||
% |
余数(取模) |
整型表达式%整型表达式 |
双目运算符 |
||
4 |
+ |
加 |
表达式+表达式 |
左到右 |
双目运算符 |
- |
减 |
表达式-表达式 |
双目运算符 |
||
5 |
<< |
左移 |
表达式<<表达式 |
左到右 |
双目运算符 |
>> |
右移 |
表达式>>表达式 |
双目运算符 |
||
6 |
> |
大于 |
表达式>表达式 |
左到右 |
双目运算符 |
>= |
大于等于 |
表达式>=表达式 |
双目运算符 |
||
< |
小于 |
表达式<表达式 |
双目运算符 |
||
<= |
小于等于 |
表达式<=表达式 |
双目运算符 |
||
7 |
== |
等于 |
表达式==表达式 |
左到右 |
双目运算符 |
!= |
不等于 |
表达式!=表达式 |
双目运算符 |
||
8 |
& |
按位与 |
整型表达式&整型表达式 |
左到右 |
双目运算符 |
9 |
^ |
按位异或 |
整型表达式^整型表达式 |
左到右 |
双目运算符 |
10 |
| |
按位或 |
整型表达式|整型表达式 |
左到右 |
双目运算符 |
11 |
&& |
逻辑与 |
表达式&&表达式 |
左到右 |
双目运算符 |
12 |
|| |
逻辑或 |
表达式||表达式 |
左到右 |
双目运算符 |
13 |
?: |
条件运算符 |
表达式1?表达式2:表达式3 |
右到左 |
三目运算符 |
14 |
= |
赋值运算符 |
变量=表达式 |
右到左 |
|
/= |
除后赋值 |
变量/=表达式 |
|
||
*= |
乘后赋值 |
变量*=表达式 |
|
||
%= |
取模后赋值 |
变量%=表达式 |
|
||
+= |
加后赋值 |
变量+=表达式 |
|
||
-= |
减后赋值 |
变量-=表达式 |
|
||
<<= |
左移后赋值 |
变量<<=表达式 |
|
||
>>= |
右移后赋值 |
变量>>=表达式 |
|
||
&= |
按位与后赋值 |
变量&=表达式 |
|
||
^= |
按位异或后赋值 |
变量^=表达式 |
|
||
|= |
按位或后赋值 |
变量|=表达式 |
|
||
15 |
, |
逗号运算符 |
表达式,表达式,… |
左到右 |
从左向右顺序运算 |
最大传送单元MTU=Maximum Transmission Unit;并不是所有的链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组;例如,以太网帧能承载不超过1500字节的数据,而某些广域网帧可以承受不超过576字节的数据。一个链路层能承受的最大数据量叫做最大传送单元MTU;
metropolitan英[ˌmetrəˈpɒlɪtən]美[ˌmetrəˈpɑːlɪtən]
- 大都会; 大城市人; 大主教;adj. 大都会的; 大城市的; 本土的;
局域网自然就是局部地区形成的一个区域网络,其特点就是分布地区范围有限,可大可小,大到一栋建筑楼 与相邻建筑之间的连接,小到可以是办公室之间的联系。局域网自身相对其他网络传输速度更快,性能更稳定,框架简易,并且是封闭性,这也是很多机构选择的原因所在。
城域网(Metropolitan Area Network)是在一个城市范围内所建立的计算机通信网,简称MAN。属宽带局域网。由于采用具有有源交换元件的局域网技术,网中传输时延较小,它的传输媒介主要采用光缆,传输速率在100兆比特/秒以上。
广域网(英语:Wide Area Network,缩写为 WAN),又称外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
按照单一网络能够覆盖的地域划分,可以把网络分为局域网、城域网和广域网。
(1)局域网
局域网即Local Area Network,简称为LAN,其主要目标是把近距离的个人计算机和电子办公设备互连起来,使用户之间可以进行数据通讯,实现资源共享。传统局域网的覆盖范围一般在500米以内,但当前新型局域网的覆盖范围已经不局限于500米。
局域网的传输控制主要依靠广播方式,但随着局域网规模的扩大,部分局域网之间也可能采用交换方式来传输数据。
(2)广域网
广域网即Wide Area Network,简称为WAN,它主要指覆盖范围很大的计算机网络系统,主要通过远程线路(比如电话交换网、卫星、光纤)将地理位置遥远的计算机系统或局域网连接起来形成网络,其覆盖范围可以是整个地球。当今广泛应用的Internet网就是一个广域网。
广域网中的传输控制主要依靠存储转发方式,是一种点对点的数据传输方式。
(3)城域网
城域网即Metropolitan Area Network,简称为MAN,是界于局域网和广域网之间的一种网络,它的覆盖范围可以是一所大学校园,也可以是一座小城镇。由于城域网通常要借助于局域网互连,因此城域网的整体体系较接近于广域网,局部体系则更接近于局域网。
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.23。
以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。经典以太网是以太网的原始形式,运行速度从3~10 Mbps不等;而交换式以太网正是广泛应用的以太网,可运行在100、1000和10000Mbps那样的高速率,分别以快速以太网、千兆以太网和万兆以太网的形式呈现。
PDU协议数据单元Protocol Data Unit:对等实体利用所在层协议进行数据交换的信息单元;由协议控制信息PCI(Protocol Control Information)和用户数据两部分组成;协议控制信息通常包含信宿的地址、信息单元大小等内容。通常位于用户数据的前面,也可以放在后面,或者两者兼而有之;
协议:通信双方必须遵循的控制信息交换的规则的集合;
cyclic循环的 英[ˈsaɪklɪk]美[ˈsaɪklɪk]
redundancy 英[rɪˈdʌndənsi]美[rɪˈdʌndənsi]
n.〈计〉重复,冗余(为补救错失保证可靠性的一种方法); 超静定(性); 冗余码,冗余位; 大量,丰富;
循环冗余校验CRC=Cyclic Redundancy Check
收发双方约定好一个生成多项式G(x);
发送方给予数据和多项式计算出检错码(冗余码),并附加到数据后面一起发送;
接收方也根据数据和多项式计算检错码(冗余码),并和发送方的冗余码进行比对,一致就表示数据无误,不一致就表示数据有错误;
常用的生成多项式:
- TCP向其上层提供面向连接的可靠传输服务;
- UDP向其上层提供无连接的不可靠传输服务;
- IP向其上层提供无连接不可靠传输服务;
- 无线局域网要求数据链路层实现可靠传输(无线链路易受干扰,误码率高);
以太网不要求数据链路层实现可靠传输(有线链路误码率比较低);
差错检测技术:奇偶校验、循环冗余校验CRC;
可靠传输实现机制:停止等待协议、回退N帧协议、选择重传协议;
- 可靠传输:发送端发送什么,接收端就接收什么;
- 不可靠传输:错误帧直接丢弃,无误帧正常接收;
差错分类:比特差错、分组丢失、分组失序、分组重复;
可靠传输服务不仅仅局限于数据链路层,其他各层均可选择实现可靠传输;
可靠传输实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求;
IPV4地址组成:网络号、主机号;网络号长度不定、主机号长度也不定,总长度为32位;
IPV4地址分类:A类、B类、C类、D类、E类;
只有ABC类地址可以分配给网路中的主机和路由器接口;
网络地址:主机号全为0的地址是网络地址,不能分配给主机或路由器;
广播地址:主机号全为1的地址是广播地址,不能分配给主机或路由器;
A类地址:网络号1字节,以0开头,主机号3字节;
B类地址:网络号2字节,以10开头,主机号2字节;
C类地址:网络号3字节,以110开头,主机号1字节;
D类地址:1110开头,共4字节,是多播地址;
E类地址:1111开头,共4字节,是预留地址;
A |
最小网络号00000000(0),保留不指派; 最大网络号01111111(127)作为本地环回测试地址,不指派; 最小的本地环回测试地址:127.0.0.1; 最大的本地环回测试地址:127.255.255.255; 最小的可指派网络号为00000001,网络地址为1.0.0.0; 最大的可指派网络号为01111110,网络地址为126.0.0.0; 可以指派的网络数量为126个,2^(8-1)-2=128-2=126(去掉一个最小值,去掉一个最大值); 最小主机号:0.0.0,为多播地址,不可分配; 最大主机号:1.1.1,为保留地址,不可分配; 每个网络中可以分配的IP地址数:2^24-2=16777216-2=16777214(去掉一个最小值,去掉一个最大值); |
B |
最小网络号10000000 00000000,也就是128.0,网络地址为128.0.0.0,可以指派; 最大网络号10111111 11111111,也就是191.255,网络地址为191.255.0.0,可以指派; 可指派的网络数量2^(16-2)=16384,无需去掉最小值和最大值; 最小的主机号00000000 00000000,也就是0.0,是网络地址,不可分配; 最大的主机号11111111 11111111,也就是255.255,是多播地址,不可分配; 最小可分配主机号:00000000 00000001,也就是0.1; 最大可分配主机号:11111111 11111110,就也是255.254; 每个网络中可以分配的IP地址数:2^16-2=65536-2=65534(去掉一个最小值,去掉一个最大值); |
C |
最小网络号11000000 00000000 00000000,192.0.0,网络地址为192.0.0.0,可以指派; 最大网络号11011111 11111111 11111111,223.255.255,网络地址为223.255.255.0,可以指派; 可以指派的网络数量2^(24-3)=2097152,无需去掉最小值和最大值; 最小主机号00000000,也就是0,是网络地址,不可分配; 最大主机号11111111,也就是255,是多播地址,不可分配; 最小可分配主机号00000001,也就是1; 最大可分配主机号11111110,也就是254; 每个网络中可以分配的IP地址数:2^8-2=256-2=254(去掉一个最小值,去掉一个最大值); |
注意 |
A类网络号的最小值最大值不可指派,分别作为保留和本地环回测试; 根据2002年9月发布的RFC 3330文档,所有的BC类网络号都可以指派,最小值不保留; 对于任意一个网络中的主机号,其最小值和最大值都不可分配,分别作为网络地址和多播地址; |
透明传输:某一层可以传输任意类型的数据,对上层数据格式没有要求;
协议栈(Protocol Stack,Protocol Suits):九三级网络运行是许多协议相互配合作用的综合结果,一套完整地计算机协议合在一起叫做协议栈;
计算机网络,是由各种计算机、服务器、交换机、路由器等网络设备,以及网络操作系统、通信协议、网络应用软件按照一定的结构、模型和通信标准所组成的,软硬件混合系统;
HTTP 状态码分类
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
分类 |
分类描述 |
1** |
信息,服务器收到请求,需要请求者继续执行操作 |
2** |
成功,操作被成功接收并处理 |
3** |
重定向,需要进一步的操作以完成请求 |
4** |
客户端错误,请求包含语法错误或无法完成请求 |
5** |
服务器错误,服务器在处理请求的过程中发生了错误 |
HTTP数据报
起始行 start line |
请求行/request line:请求方法Method URL/URI 协议版本Version CRLF 响应行/状态行:协议版本Version 状态码StatusCode 原因描述reason CRLF 各个字段用空格隔开;CRLF表示回车+换行; |
头部/首部 header |
通用首部:既可以用于请求报文,也可以用于响应报文; 请求首部:只能用于请求报文; 响应首部:只能用于响应报文; 实体首部:用于描述主题长度和内容,或者资源; 扩展首部:规范中没有定义的首部; |
空行 CRLF |
|
实体 entity/body |
|
流量控制→调整收发速率,两端速度匹配→滑动窗口协议;
传输层:传输服务访问点=Transport Service Access Point=TSAP
网络层:网络服务访问点=Network Service Access Point=NSAP
套接字分类:流套接字、数据报套接字、原始套接字;
TCP 是⾯向连接的、可靠的、基于字节流的传输层通信协议。
⾯向连接:⼀定是「⼀对⼀」才能连接,不能像 UDP 协议可以⼀个主机同时向多个主机发送消息,也就是⼀
对多是⽆法做到的;
可靠的:⽆论的⽹络链路中出现了怎样的链路变化, TCP 都可以保证⼀个报⽂⼀定能够到达接收端;
字节流:消息是「没有边界」的,所以⽆论我们消息有多⼤都可以进⾏传输。并且消息是「有序的」,当
「前⼀个」消息没有收到的时候,即使它先收到了后⾯的字节,那么也不能扔给应⽤层去处理,同时对「重
复」的报⽂会⾃动丢弃。
IP 层是「不可靠」的,它不保证⽹络包的交付、不保证⽹络包的按序交付、也不保证⽹络包中的数据的完整性。机械特性、电气特性、功能特性以及过程特性
- 机械特性、电气特性、功能特性以及过程特性
- 一、物理层(Physical Layer)
- 二、数据链路层(Datalink Layer)
- 三、网络层(Network Layer)
- 四、传输层(Transport Layer)
- 五、会话层(Session Layer)
- 六、表示层(Presentation Layer)
- 七、应用层(Application Layer)
TCP/IP 各层 |
PDU名称 |
应用层 Application Layer |
APDU/数据报 |
运输层/传输层 Transport Layer |
TPDU/段 |
网络层 Network Layer |
NPDU/分组 |
数据链路层 Datalink Layer |
帧 |
物理层 Physical Layer |
比特流 |
协议数据单元,简称PDU(Protocol Data Unit)
物理层PDU:数据位(bit)
数据链路层PDU:数据帧(frame)
网络层PDU:数据包(分组)(packet)
传输层PDU:数据段(segment)
更高层次的PDU:报文(message)
PDU=Protocol Data Unit=协议数据单元
TPDU=Transport Protocol Data Unit=传输协议数据单元
Socket协议并不是OSI模型或TCP/IP模型中的某一层,而是一种应用层协议。它允许应用程序通过网络进行通信,实现进程间的数据传输。
在计算机网络中,应用层是最高层,它负责处理用户应用程序之间的通信,通常使用的协议有HTTP、FTP、SMTP、POP3、IMAP等。而Socket协议是在应用层之上实现的一种协议,它使用TCP或UDP协议在网络上进行数据传输。
因此,Socket协议通常被认为是一种应用层协议,它允许应用程序通过网络进行通信,并提供了一种可靠的、基于连接的数据传输方式,具有高效、灵活、易用等特点。
回环(loopback)指将电子信号、数据流等原样送回发送者的行为。它主要用于对通信功能的测试。loopback 回环; 回送; 环回接口; 回送地址; 环回地址;
抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
密码学
RSA一般指RSA算法。 RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。
SSL协议可分为两层:
SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
X.509是公钥基础设施(PKI)的标准格式。X.509证书就是基于国际电信联盟(ITU)制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份,保护数据传输安全。X.509证书无处不在,比如我们每天使用的网站、移动应用程序、电子文档以及连接的设备等都有它的身影。
X.509 是密码学里公钥证书的格式标准。 X.509 证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多 Internet协议里.同时它也用在很多非在线应用场景里,比如电子签名服务。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)。对于一份经由可信的证书签发机构签名或者可以通过其它方式验证的证书,证书的拥有者就可以用证书及相应的私钥来创建安全的通信,对文档进行数字签名.
另外除了证书本身功能,X.509还附带了证书吊销列表和用于从最终对证书进行签名的证书签发机构直到最终可信点为止的证书合法性验证算法。
X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准。
ITU-T的中文名称是国际电信联盟电信标准分局(ITU-T for ITU Telecommunication Standardization Sector), 它是国际电信联盟管理下的专门制定电信标准的分支机构。