网络连接详解

网络连接详解,第1张

用户: 需求发起者。

数据传输过程图:

应用程序: 发起数据的传输交流过程。

过程:

过程:

过程:

过程:

过程:

过程:

过程:

注: OSI参考模型总结 - 小白的博客 - CSDN博客

访问服务器的过程可以通过 windows+R 快捷命令 --> 进入运行界面--->然后通过cmd 命令 --->进入控制台--->然后输入命令 tracert + 访问的域名网址-->查看访问过程。

ping命令来测试网络连接:

物理层常见故障:

硬件连接问题:1接触不良2硬件未连通

数据链路层故障:

1MAC地址冲突不能上网;

2交换机与计算机网卡的带宽协商不一致,网速不一致导致网络不通;

3ADSL欠费导致网络不通;

4将计算机错误的连接到VLAN(Virtual Local Area Network)。

注:

网络层故障:

1计算机IP地址设置错误。

2计算机没有设置网关。

3计算机子网掩码配置错误。

4沿途路由器路由表错误。

传输层故障:

表示层故障:

乱码问题(字符集对应错误)

应用层故障:

应用层程序配置问题(浏览器服务器的配置问题导致上网故障等)

物理层安全:

防止非法计算机接入公司网络(包括无线AP)

数据链路层安全:

1设置WiFi密码,属于网络链路层添加秘钥的方法。

2公司内部的交换机可以设置哪个Mac地址可以接入,设置接多少台计算机。

3家里的ASDL拨号上网的需要登入账号密码。

4划分不同的VLAN(Virtual Local Area Network)

网络层安全:

1在路由器上设置ACL控制数据包转发,控制网络。

2在计算机上设置网络安全,设置访问权限。

应用层安全:

发现软件漏洞,增补丁。

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字可以实现将多个客户连接到一个服务器。

它是网络通信中端点的抽象表示,包含进行网络通信必需的五种信息:1连接使用的协议,2本地主机的IP地址,3本地进程的协议端口,4远地主机的IP地址,5远地进程的协议端口。

1域: 套接字通信中使用的网络介质,常见的有AF_INET(因特网络)

2类型:

a 流式套接字(sock_stream): 用于提供面向连接、有序的、可靠的双向jie节流的链接式数据传输服务,由类型sock_stream指定,他是在AF_INET域中通过TCP/IP链接实现的。

b 数据报套接字(sock_dgram): 提供了一种无连接的服务,是AF_INET域中通过UDP/IP链接实现的。

c 原始套接字(sock_raw): 允许对较低层次的协议直接访问,比如IP、ICMP协议,他常用于检验新的协议的实现或者访问现有服务中配置的新设备。网络监听技术很大程度上依赖于socket_raw

3协议: 套接字协议一般采用默认值。即默认参数为0。

1套接字是用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

2当前应用进程需要使用网络进行通信时,就会发出系统调用,请求 *** 作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。

3 *** 作系统为这些资源的总和,用一个叫做套接字描述符的号码表示,并把此号码返回给应用进程,应用进程所进行的网络 *** 作都必须使用这个号码。

4通信完毕后,应用进程通过一个关闭套接字的系统调用通知 *** 作系统回收与该“号码”相关的所有资源。

1连接创建阶段

a套接字被创建后,其端口号和IP地址都是空的,应用进程调用bind(绑定)来指明套接字的本地地址(在服务器端调用bind时就是把熟知端口号和本地IP填写到已创建的套接字中)

b服务器调用bind后 ,还必须调用listen(收听)把套接字设置为被动方式,以便随时接收客户的服务请求。(UDP服务器由于只提供了无限连接服务,不使用listen系统调用)

c客户进程发送连接请求后,服务器紧接着调用accept(接受),以把客户进程发来的连接请求提取出来。(系统调用accept的一个变量就是要指明哪一个套接字发起的连接。)

2数据传输阶段

客户和服务器都在TCP连接上使用send系统调用传送数据,使用recv系统调用接收数据。

3连接释放阶段

一旦客户或者服务器结束使用套接字,就把套接字撤销,此时调用close释放连接和撤销套接字。应用层总结-系统调用和应用编程接口 - 十分残念的博客 - CSDN博客

其过程示意图如下:

网络编程的目的:

直接或间接地通过网络协议与其他计算机进行通讯。

网络编程的问题:

1如何准确的定位网络上一台或多态主机。

2找到主机后,如何快速高效的传输数据。

网络编程的对象:

传输层提供的面向应用的可靠或非可靠的数据传输机制。

网络编程流行模型:

1CS模型(客户端/服务器模型)

2BS模型(浏览器/服务器模型)

参考网络编程--Socket(套接字) - A-祥子 - 博客园

注: 扩展链接内关于TCP/IP的相关知识讲解也相当详细,可以参考浏览一下。

多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机 *** 作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。

如果处理的是面向连接的网络服务(SOCK_STREAM或SOCK_SEQPACKET),在开始交换数据以前,需要在请求服务的进程套接字(客户端)和提供服务的进程套接字(服务器)之间建立一个连接。客户端可以用connect建立一个连接。
#include <sys/socketh>
int connect(int sockfd, const struct sockaddr addr, socklen_t len);
返回值:若成功则返回0,出错则返回-1
在connect中所指定的地址是想与之通信的服务器地址。如果sockfd没有绑定到一个地址,connect会给调用者绑定一个默认地址。
当连接一个服务器时,出于一些原因,连接可能失败。要连接的机器必须开启并且正在运行,服务器必须绑定到一个想与之连接的地址,并且在服务器的等待连接队列中应有足够的空间。因此,应用程序必须能够处理connect返回的错误,这些错误可能由一些瞬时变化条件引起。
实例
程序清单16-2显示了一种如何处理瞬时connect错误的方法。这在一个负载很重的服务器上很有可能发生。
#include "apueh"
#include <sys/socketh>
#define MAXSLEEP 128
int
connect_retry(int sockfd, const struct sockaddr addr, socklen_t len)
{
int nsec;
/
Try to connect with exponential backoff
/
for(nsec = 1; nsec <= MAXSLEEP; nsec <<= 1)
{
if(connect(sockfd, addr, alen) == 0)
{
/
Connection accepted
/
return(0);
}

/
Delay before trying again
/
if(nsec <= MAXSEELP/2)
sleep(nsec);
}
return(-1);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12968196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存