网络编程

By admin on 9月 23, 2022

等待这段时间是为了防止误操作,最常见的误操作就是客户端返回的确认号丢失,至于等待多长时间,和数据包重传的方式有关,这里我们就深入展开讨论了。

如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。

路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。

通信的两端都有Socket。

用Python进行网络编程,就是在Python程序本身这个进程内,连接别的服务器进程的通信端口进行通信。

最近在读经典的《Linux程序设计(第3版)》,第十五章讲的是套接字Socket编程,读完之后,产生了一些想法,觉得有必要写下来。

第6章讲解网页内容获取、访问FTP服务器、访问DNS、收发E\ue011mail、获取DHCP信息等实用程序的编写方法与过程,这些实例能够让读者进一步理解网络理论和工具软件的运行机制,由赵宏和包广斌编写。

✁TCP协议**TCP协议:**是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。

Sockets=newSocket(192.168.40.165,9999);OutputStreamout=s.getOutputStream;out.write(hello.getBytes);s.close;服务器程序的工作过程包含以下四个基本的步骤:1)调用ServerSocket(intport):创建一个服务器端套接字,并绑定到指定端口上。

为什么收到数据包不会直接发送出去,而是放在缓冲区中呢?因为只要一旦收到数据就会发送,就有可能发送大量的小数据包,导致网络效率下降(所以协议栈需要将数据积攒到一定数量才能将其发送出去。

**目录**一.UDPDatagramSocketDatagramPacket服务器客户端二.TCPServerSocketSocke服务器客户端***>**网络编程**>指的就是网络上的主机通过不同的进程,以编程的方式实现网络信息传输,而提到网络编程的话,就需要知道一个网络编程套接字socket(操作系统提供的网络编程的API),这是传输层和应用层之间进行调用的接口,也就是操作系统给应用程序提供的API,一调用这个就可以和内核之间进行信息传递,那么在传输层内两个主要的协议TCP/UDP,就得了解了解了,而这两个协议的差别也是很大的,所以分别给这两组协议各自都提供了合适的API,因此这两套API都得加以了解!>**一.UDP**>>基本特点:无连接(不需要与服务器建立连接就可以直接发送数据),不可靠(并不知道对方是否接受到数据),面向数据流,全双工(一条通道,双向通信)>>两个核心类:>>**DatagramSocket**>>创建了一个UDP版本的socket对象(代表着操作系统中的socket文件(代表这着网卡硬件设备的抽象体现))>>核心方法:receive:接收数据>>send:发送数据>>close:释放数据>>**DatagramPacket**>>表示了一个UDP数据报,意味着每次发送/接收的都是一个DatagramPacket对象>>使用这两个类,来简单实现一个客户端服务器程序,回显服务(请求啥就响应啥)>服务器importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.SocketException;publicclassUDPEchoServer>然后随便使用一个线程版本的服务器就可以与多个客户端进行连接了:>>!(https://img-blog.csdnimg.cn/4a256b21754b442f91778e30c4637a84.png?x-oss->process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qCLenp6eg==,size_20,color_FFFFFF,t_70,g_se,x_16)>>!(https://img-blog.csdnimg.cn/bdf97fd7c6bc4676bf99080671163258.png?x-oss->process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qCLenp6eg==,size_20,color_FFFFFF,t_70,g_se,x_16)>>!(https://img-blog.csdnimg.cn/fafa2fd8b8b446778dfb8b955b1c364a.png?x-oss->process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qCLenp6eg==,size_20,color_FFFFFF,t_70,g_se,x_16)>>这样就可以与多个客户端进行连接了这样问题也就解决了!!!,网络的基本概念及Http协议网络的基本知识IP地址和端口号*IP地址:每台计算机都必须有一个唯一的IP地址作为标识,由.分隔的十进制数组成*端口号:采用端口号标识计算机上正在运行的进程*每个被发送的网络数据包括都包含端口号网络协议!网络编程(/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk2Ny9hZGU0ZjNlYTEwYjlhZGI1OTYzMzZmMGZlZjdkODZjNy5wbmc=)HTTP协议*属于应用层的面向对象的协议,适用于分布式超媒体信息系统*主要特点支持C/S模式简单快捷:只需传送请求方法和路径灵活:允许传输任意类型的数据对象无连接:限制每次连接只处理一个请求无状态:对事务处理没有记忆功能*HTTP的URL的格式:http://host:port/pathhttp表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用默认端口80;path指定请求资源的URL*HTTP请求报文请求行,请求报头,空行,请求数据*HTTP响应报文状态行,消息报头,空行,响应正文常见状态码200OK:客户请求成功400BadRequest:客户端请求有语法错误,不能被服务器所理解401Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用403Forbidden:服务器收到请求,但是拒绝提供服务404NotFound:服务器无法根据客户端的请求找到资源500InternalServerError:服务器发生不可预期的错误503ServerUnavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常https请求HTTP安全版HTTPS=HTTP+SSL/TLSHTTPS的安全基础是SSL请求过程!网络编程(/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE3Lzg4YWEzOTI1NjczNTkwMDBiNGFjYWM2Yjg4NGYwMjA5LnBuZw==)网络编程Http通信方式*HttpURLConnectionAndroid2.3之后,HttpURLConnection是Android网络编程的最佳选择,它的API简单,体积较小,压缩和缓存机制有效较少网络访问的流量*HttpClient*Socket通信方式Android的Https*自定义X509TrustManager1.在使用HttpsURLConnection发起HTTPS请求的时候,提供了一个定义的X509TrusManager,未实现安全逻辑2.如果不提供定义X509TrustManager,代码运行起来可能会报异常*自定义HostnameVerifier1.在握手期间,如果URL的主机和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。

其中,前两个方法用于获得该类的实例对象,第一个方法用于获得表示指定主机的InetAddress对象,第二个方法用于获得表示本地的InetAddress对象。

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个DHCP响应数据包。

IP:一个IP地址唯一标识一个网络接口。

socket其实也是一样的东西,就是提供了tcp/ip协议的抽象,对外提供了一套接口,同过这个接口就可以统方便的使用tcp/ip协议的功能了。

这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

目前剩余数量基本无限不用担心用尽1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f1a2b::aaaa:0000:0000:0000:aabb:1f2f1a2b:0000:aaaa::aabb:1f2f1a2b:0000:aaaa::0000:aabb:1f2fa2b:0000:aaaa:0000::aabb:1f2f以上是比较常见的v6地址正常为8组但相邻的0000可以省略成::详解端口号每个程序在设备上的唯一标识每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显IP的QQ版本中显示好友的IP地址信息中端口常为4000或其后续端口的原因了),即QQ程序既接受服务又提供服务,在以后的QQ版本中也支持使用TCP协议了。

网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行数据传输。

TCP协议采用字节流传输数据。

**图6.一个执行周期

**这种模型的特征在于每一个执行周期都会探测一次或一组事件,一个特定的事件会触发某个特定的响应。

本书在编写过程中,得到兰州理工大学计算机与通信学院和信息中心各位老师的支持。

计算机网络分为网络协议和网络体系结构。

1TCP三次握手的过程如下:客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

TCP与UDP的区别1.TCP基于连接,UDP是无连接的;2.对系统资源的要求,TCP较多,UDP较少;3.UDP程序结构较简单;4.TCP是流模式,而UDP是数据报模式;5.TCP保证数据正确性,而UDP可能丢包;TCP保证数据顺序,而UDP不保证;2.2.4HTTP协议(HypertextTransferProtocol)HTTP,超文本传输协议,它是互联网上应用最为广泛的一种网络协议。

发表回复

您的电子邮箱地址不会被公开。