网络编程--层概念个人理解

 

不同层有各自的职能,组合起来,就像排列组合一样,根据不同的需要组合成不同的排列,比如,同样的ip协议,有的要TCP协议长连接方式,有的要UDP方式。分成不同层,就可以满足更多不同的需求。

在链路层,数据以帧的形式传输,格式分两部分,帧头和帧体,头部记录了网卡的信息,帧体记录了传输的数据,一帧最大为1518个字节。当要传输的数据如图片大于它时,就会分成多个帧来传输;

在网络层,从链路层中帧体,可以拿到ip标头和ip数据

以上,相当于在一个‘体’中,封装了头+体的数据格式,就像递归,不同数据之间存在着层级关系,层与层之间的识别只需要拿到相应数据层的‘头’信息来标识

所以,在传输层,就从网络层的ip数据体中拿到传输层的‘头’+‘体’信息:TCP/UDP标头和TCP/UDP数据,如果是UDP协议,标头就会相对比较简单

 

应用层:端到端的通信

传输层:进程和进程之间的通信

传输层拿到应用层的数据,将数据发给其他主机的某一个进程,利用端口号来识别具体的进程,网络层中有了本地IP地址和目的主机IP地址。

至于UDP和TCP,就是传输层传输数据的方式,一种是稳定的长连接,一种是快速的短连接

UDP面向报文,只要管好报文的组装即可。

TCP面向连接,需要管好连接通道的管理,包括建立的三次握手,释放连接的四次握手,建立连接后,双方都对数据的起始位置和下一次要拿到的数据位置做了标识,如果发生数据不对,就会通知重发,以此来保证数据的连续性和准确性。

至于主机-路由器、路由器-路由器、路由器-主机的通路,由网络层负责,有路由选择算法来得到,传输层不需关心。而对应用层来说,数据是怎样传到另外一个主机的进程的,也不需要关心,由传输层负责。

不同协议的报文可能会封装到同一个IP分组中,不过报文头中有标识协议类型和端口,如UDP,所以,对于网络层来说,忽视传输层协议的差异性,统一封装到IP分组中,接收方的传输层根据端口识别进程,根据协议类型来选择处理方式。

处理方式:比如,如果是UDP的协议类型报文,则只要获取数据即可。如果是TCP的协议类型报文,则要看是在处于什么连接阶段,根据TCP头部的报文中的标识位,来判断是否要去建立连接,还是获取数据并回应,还是通知重发等操作,正是有了这些操作,才让TCP变得可靠。

端口号中有三类:熟知端口号,如HTTP的80端口,DNS的53端口;注册端口号,供用户注册使用,避免冲突;临时端口号,标识用户进程用的,只对一次通信有用。

如果应用层选择了DNS协议,则会将传输层的数据报文中目标主机的端口设为53,本机主机的端口就为临时端口。这样,这个报文去到目标主机,就会选择DNS的处理进程来处理数据,即解析域名。

用户在浏览器访问一个地址时,首先会发起一次域名解析请求,向域名服务器获取具体的IP地址,这个过程就涉及到不同主机之间的通信,也就用到以上所说的应用层、传输层、网络层等发挥作用。DNS可以用UDP,也可以用TCP,目标主机的53端口进程拿到一段文字域名后,查找匹配相应的IP地址,再同样将数据传输过来。

如果应用层选择了FTP或HTTP这种协议,传输层就会选择TCP的协议类型来传输数据,保证数据传输过程中的稳定可靠。

 

 

socket:是网络通信的端点,ip+端口可以识别一个进程,用socket来封装ip+端口,就可以来进行网络通信

 

同步、异步、阻塞、非阻塞:

同步:接收方会执行完请求才返回结果

异步:接收方会立刻返回结果,但实际结果会晚点再发,类似被叫回去等通知

阻塞:发起方在没拿到结果前一直等待

非阻塞:发起方在没拿到结果前可以做其他事情

同步阻塞:发起方等待,接收方也等执行完才返回结果

异步阻塞:发起方等待,接收方先返回一个通知,等晚点才返回真正结果

同步非阻塞:发起方不等待,接收方执行完才返回结果

异步非阻塞:发起方不等待,接收方也会先返回一个通知,晚点执行完才返回结果

比如:老师发布成绩,学生拿到成绩,考完试后,学生是不是一直挂念成绩结果,就等同于阻塞非阻塞;而老师不管学生是怎样的,我是不是立刻就改试卷不做其他事,还是跟学生说后天发布成绩,就等同于同步异步

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值