❶ 操作系统是如何将socket接受的数据发送给应用层的
在正篇开始之前,我先提问几个问题,不知道你是否全都了解:
(1) 网络请求是通过http发送的吗?
(2) http与tcp之间的关系?
(3) 网络请求是怎么发送的,通过什么形式去发送的?
在过往对于http与tcp的理解其实只是一个简单模糊的概念,仔细想想其实http只是一种协议,tcp只是用于建立一个持久连接,它们都不是用于网络发送数据的根本,真正发送数据的是我们的物理层,http协议只是作为一个标识的作用,简单来说是定位到某一主机。
下面来介绍一下计算机网络体系结构
计算机网络分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层以及应用层,由于7层太多所以后面经过演变之后定为5层,把应用层,会话层,表示层给合统称为应用层,我们客户端的每一步操作,举个例子,当我们点击发送按钮请求网络的时候,这时候会通过应用层逐渐往下传递直到物理层,物理层会提供一个互联网网络接口,这时候才真正通过互联网开始传输数据,这里最主要介绍的是传输层以及物理层,其它的网络一下,传输层是第一个端到端的层次,也是进程——进程的层次。
主要功能是实现端到端的可靠数据传输、复用与分解、连接控制、流量控制和拥塞控制(这些东西都是定义去网络一下,比如说流量控制,其实就是控制数据的发送量,你不能一次性发送很多数据,原因想一下就知道了),客户端的每一步操作都会在这5层体现出来,查下定义之后就会一目了然(比如说在我们终止会话,这时候就是由会话层管理,实体间交换数据的语法,解决格式和数据表示的差别是由表示层来完成等),在我们建立连接的时候比如说发送一个http请求(原理跟后面的socket数据传输模块是一样的),我们会先建立一个tcp连接,然后发送http请求,这时候数据会经过传输层,传输层里携带了发送数据的报文(比如ip地址,端口号之类的,数据内容),向下传递到物理层,物理层最后会提供一个互联网网络接口去发送数据,数据是以比特流的形式发送,发送到交换机上面(交换机是什么,去网络查一下,不做解释),交换机是有多个的,当我们数据非常大的时候,数据会被分解发送到多个交换机上面,传到对方客户端或者服务器的时候数据会重新整合起来,上面的是一个简单的http请求,下面来介绍一下Socket。
1.Socket的整体流程:
udp客户端:创建套接字,发送数据,接收数据,关闭套接字。
udp服务端:创建套接字,绑定地址和端口号,接收数据,发送数据,关闭套接字。
tcp客户端:创建套接字,建立连接,发送数据,接收数据,关闭套接字。
tcp服务端:创建套接字,绑定地址和端口号,设置监听,建立连接,发送数据,接收数据,关闭套接字。
这些理解起来很容易,我们客户端是要发送数据的,服务端需要接收数据,所以服务端要绑定地址和端口号,而tcp是需要三次握手的所以要有监听。
2.Socket三次握手
第一次握手,客户端发送请求给服务端(询问是否可以建立连接)。
第二次捂手,服务端回应给客户端一个确认,接受连接或者拒绝连接
第三次握手,经过确认之后,客户端回应给服务端(意思是我要开始发送数据了,下一步就开始发送了)。
理解三次握手,为什么要三次,第一次握手确认客户端可以发送请求,第二次握手确认服务端可以接收并且发送,第三部确认客户端可以接收。
3.Scoket四次挥手
第一次挥手,客户端向服务器发送断开连接请求
第二次挥手,服务端回应客户端(意思是,稍等等我数据传完(处理完的意思),在断开)
第三次挥手,服务端回应客户端断开请求(可以断开了)
第四次挥手,客户端与服务端请求断开。
tcp连接是面向连接的,数据发送可靠,udp是面向无连接的,数据发送过后就不管了,下面介绍一下tcp为什么数据可靠
具体方法如下:
差错检测:我们发送数据的时候刚刚说过是由物理层提供的互联网网络接口以比特流的形式进行发送,那么这个时候差错检测利用差错编码实现数据包传输过程中的比特差错检测,保证数据正确性
确认:接收方向发送方反馈接收状态。ACK(肯定确认);NAK(否定确认)
重传:当没有接收到反馈状态。ACK(肯定确认);NAK(否定确认)的时候,或者请求超时的时候进行重新发送
计时器:内部检测,一个定时器,当数据在一定时间没有接收到确认的时候就认为发送失败,进行重传操作。
序号:刚刚说了重传有两种情况,那么当重传是因为网络超时引起的,那么这个时候计时器进行了一次重传,然后上次超时后并没有发送失败这个时候也发送成功了,这个时候就会造成数据错乱,那么序号就起了一个作用,就是给数据进行排序,以至于不错乱。
下面来说一下tcp可靠传输协议滑动窗口协议
左边的代表的是接收的数据,中间代表的是正在处理的,右边代表的是没有处理的,在我们发送数据的时候比如56789这些数据发送,56成功了,这时候窗口就会往右移动,接收的时候呢,当我们接收比如56,接收成功了,这时候窗口往右移动,这里有一个需要注意一下,比如说当我们5没有发送成功或者说5没有接收成功,而6发送成功了,这时候窗口是不会往右移动的,它会等待5发送成功后在往右移动,浮动窗口协议里还有GBN协议和SR协议,这两个的主要区别是,GBN协议的发送窗口只能发送一个,比如上面中间准备发送的5678就只能存在5一个,但是接收窗口是可以有多个的,SR协议是可以发送窗口与接收窗口都是可以多个的。
最后总结一下http请求与socket的差异,socket是套接字,用于将报文传输到传输层,http请求在发送的时候会建立tcp连接,所以http也会分为http持久性连接和非持久性连接,至于网络传输都是要经过物理层才能传输,数据经过多个交换机进行分解,传到服务器的时候在进行整合。
网卡接收到数据根据数据头,将数据写到对应的内存,并发出中断,系统接收到中断,然后通知应用吧?
VC中客户端socket与服务器连接后,需要执行一个封状的操作
朝服务器发送一些数据(命令),然后返回结果
假设全部才字符串,类似这样的函数
CString SendCommand (CString cmd,socket sk)
要求在执行这个函数的时候能同时响应用户界面操作
也就是要用异步方式
而且这个socket已经建立好,有RecvTheard在处理
我目前是用Event实现的,很别扭:
m_hevtReadStore=CreateEvent(NULL,false,FALSE,NULL);
//m_tcp是封装的socket基本操作类
❷ 电脑如何设置网络连接
问题一:电脑如何设置宽带连接 你好,请使用下面的创建宽带连接。希望能够帮助你,望采纳!
首先是xp系统的创建的方法:
1.进入控制面板,选择网络连接,然后点击左侧的“创建一个新的连接”,如图
2.出现“连接向导”
3.选择连接到“Internet”
4.手动设置我的连接
5.选择“要求用户名和密码的宽带连接来连接”
6.IPS不用写,直接点击下一步
7.用户名和密码也不用,直接下一步
8.选上“在我的桌面添加一个到此连接的快捷方式”,这样桌面上就有宽带连接了,就输入你的用户名和密码开始网上冲浪吧!
windows7系统创建连接的方法:
1.右键点击桌面上的“网络”,选择属性2.进入“网络和共享中心”,点解“设置新的连接或网络”
3.弹出“设置连接和网络”界面,选择“连接到Internet”4.在这个界面,点击“宽带(PPPOE)5.在这个界面,用户名和密码可以不填,连接名称写上“宽带连接”,点击连接
6.弹出“正在宽带连接”的界面,点击下面的跳过
7.接着点击关闭
8.回到“网络和共享中心”,点击左侧的“更改适配器设置”
9.弹出“网络连接”的界面,可以看到新建的“宽带连接”,右键单击“宽带连接”,选择“创建快捷方式”
10.在电脑的桌面上就会出现“宽带连接的”图标
问题二:新买的电脑怎么设置网络连接 1、把宽带猫的输出线,与电脑网卡相连。
2、启动宽带猫的电源。
3、 右键单击“网上邻居”--属性--网络任务栏点击“创建一个新的连接”--下一步--点选“连接到Internet”点击“下一步”--点选“手动设置我的连接”,下一步,--点选“用要求用户名和密码的宽带连接来连接”点击“下一步”--输入isp名称。例如:“宽带连接”点击“下一步”--输入用户名、密码、确认密码,点击“下一步”--勾选“在我的桌面上添加一个到此连接的快捷方式”,点击“完成”按钮即可。
4、设置IP地址。
右击网上邻居图标,打开“本地连接”属性,在TCP/IP协议上双击,在出来的对话框中选择“自动获取IP地址、自动获取DNS地址”.
打开“宽带连接”属性,---网络---在TCP/IP协议上双击,在出来的对话框中选择“自动获取IP地址、自动获取DNS地址”.
5、打开“宽带连接”图标,输入你的帐号和密码后,点击连接。
相信到这里,你应该会了,如果帮到,请采纳,谢谢!
如果还没搞明白,可以网络找找答案!
问题三:电脑网络连接怎么设置成默认 操作步骤:开始--控制面板--网络连接---宽带(你起的宽带连接名)--属性--选项--去掉《连接时显示进度》和提示名称、密码和证书》前的勾即可。
问题四:win8系统的电脑怎么设置网络连接 1、把鼠标在桌面上移动到屏幕右边的上角或者下角,看到弹出的设置界面后点击【设置】,屏幕的右侧会弹出下面的窗口。
2、点击控制面板
3、点击控制面板后会出现下面的窗口,点击【网络和Internet】。
4、点击进入以后,在点击【网络和共享中心】。
5、然后直接点击【创建新的连接或网络】。
6、然后更具提示,选择,下一步。剩下的和win8以前的系统连接设置都差不多了。
问题五:联想电脑怎么添加网络连接 建议您按照以下步骤进行宽带连接
1、点开始菜单――所有程序――附件――通讯――新建连接向导
2、网络连接类型:选择1,连接到Internet
3、选择2,手动设置我的连接
4、选择2,用要求用户名和密码的宽带来连接
5、ISP名称,自己随便设,设定的名称以后就是在桌面上显示的快捷方式名称
6、用户名、密码,填你申请宽带时给你的原始用户名,密码
问题六:怎么设置电脑始终保持网络连接不断开啊 宽带设置成 从不断开 桌面空白处右键 属性 电源 待机那里设置成从不就可以了
问题七:电脑直接插网线上网怎么设置? 你将宽带连接在Internet工具中连接的默认拨号连接关掉。然后,到本地连接属性中,找到Internet协议(TCP/IP)属性中将自动获得IP地址打上勾。最后点击确定这样一切就OK了。
问题八:我换了电脑,怎样在电脑上设置宽带连接? 您需要先安装好宽带 MODEM,通过网线连接好电脑主机。如果您使用的是Windows系统。可通过以下步骤设置宽带连接:点击开始菜单,选择 程序->附件->通讯->新建连接向导,按步骤设置即可:1)网络连接类型:选择“连接到Internet”;2)怎么连接到Internet:选择“手动设置我的连接”;3)Internet连接:选择“用要求用户名和密码的宽带链接来连接”;4)连接名:填写连接名称,可自动命名;5)Internet帐户信息:填写ADSL宽带 帐号、密码,请注意区分大小写字母。填写好帐号、密码后点击下一步,将“在我桌面上添加一个到此连接的谢谢您对电信产品的关注,祝您生活愉快。 如果以上信息没有解决您的问题,也可登录广东处信手机商城(m.gd.189),向在线客服求助,7X24小时在线喔!
问题九:怎么设置电脑优先连接有线网络 打开控制面板,选择“网路和共享中心”选项。打开“更改适配器设置”选项、按“Alt”键调出菜单栏 点击“高级”选项,并选择“高级设置” 5、在“适配器和绑定”菜单下,选择网络并点击右边的绿色箭头设置优先级,再点击“确定”保存设置。 好了,这样设置后就可以按照你设置的顺序进行网络链接了。
问题十:电脑wifi连接怎么设置成宽带连接 一.双击打开网上邻居--在左侧栏点查看网络连接--创建一个新的连接:
1.新建连接向导 ,打开“欢迎使用新建连接向导”界面--“下一步” ;
2.选择“连接到Internet”--“下一步”;
3.选择“手动设置我的连接”--“下一步”;
4.选择“用要求用户名和密码的宽带连接来连接”--“下一步”;
5.在“ISP名称文本框中输入名称“**(《宽带连接》或《网络连接》)”--“下一步”;
6.)在“用户名”文本框中输入所使用的用名称(ADSL账号),在“密码”文本框中输入密码,在“确认密码”文本框中重复输入密码确认,勾选“任何用户从这台计算机连接到Internet使用此帐户名和密码”和“把它做为默认Internet连接”―下一步;
7.勾选“在我的桌面上添加一个到此连接的快捷方式”―单击“完成”后,会看到桌面上多了个名为“**(《宽带连接》或《网络连接》”的连接图标。
二.设置连接属性
(1)本地连接:开始―连接到―显示所有连接―右击本地连接―属性―常规―点选Internet协议(TCP/IP)--属性―点选使用下面的IP地址(设置固定IP,可以加快网络连接速度,供参考):
IP地址:192.168.0.2
子网掩码:255.255.255.0
默认网关:192.168.0.1。
使用下面的DNS服务器地址(供参考):
首选:1.1.1.1
备用:24.24.24.24
最后点击确定。
或者不设置固定IP,勾选自动获得IP地址(网络连接速度相对设置固定IP会慢一些)--确定。
(2)宽带连接:右击宽带连接―属性―网络―选自动获得IP地址―确定。
❸ 【计算机网络】http协议的持久连接的非流水线方式和非持久连接有区别么
有区别。
非持续连接是每访问一个对象就要建立一次TCP连接,TCP连接的三次握手加上HTTP的响应报文总共所需时间是2RTT,文件传送结束后断开TCP连接。
而持续连接的非流水线方式特点是(既然是持续连接TCP连接就不断开),每访问一个对象要等到收到前一个响应后才能发出下一个请求,因此客户每访问一个对象要用去一个RTT时间。
综上,持续连接的非流水线方式比非持续连接节省了建立TCP连接的一个RTT时间。