建设银行etc的网站是哪个好,wordpress页面分栏,杭州网站搜索,怎么制作视频教程文章目录什么是网络编程网络编程中两个主要的问题网络协议是什么为什么要对网络协议分层计算机网络体系结构1 TCP / UDP1.1 什么是TCP/IP和UDP1.2 TCP与UDP区别#xff1a;1.3 TCP和UDP的应用场景#xff1a;1.4 形容一下TCP和UDP1.5 运行在TCP 或UDP的应用层协议分析。什么是…
文章目录什么是网络编程网络编程中两个主要的问题网络协议是什么为什么要对网络协议分层计算机网络体系结构1 TCP / UDP1.1 什么是TCP/IP和UDP1.2 TCP与UDP区别1.3 TCP和UDP的应用场景1.4 形容一下TCP和UDP1.5 运行在TCP 或UDP的应用层协议分析。什么是ARP协议 (Address Resolution Protocol)什么是NAT (Network Address Translation, 网络地址转换)从输入址到获得页面的过程?1.6 TCP的三次握手1.6.1 什么是TCP的三次握手1.6.2 三次握手的具体细节1.6.3 用现实理解三次握手的具体细节1.6.4 建立连接可以两次握手吗为什么?1.6.5 可以采用四次握手吗为什么1.6.6 第三次握手中如果客户端的ACK未送达服务器会怎样1.6.7 如果已经建立了连接但客户端出现了故障怎么办1.6.8 初始序列号是什么1.7 TCP的四次挥手1.7.1 什么是TCP的四次挥手1.7.2 四次挥手的具体细节1.7.3 用现实理解三次握手的具体细节TCP的四次挥手1.7.4 为什么不能把服务器发送的ACK和FIN合并起来变成三次挥手CLOSE_WAIT状态意义是什么1.7.5 如果第二次挥手时服务器的ACK没有送达客户端会怎样1.7.6 客户端TIME_WAIT状态的意义是什么2 Socket1 什么是Socket2 socket属于网络的那个层面3 Socket通讯的过程4 TCP协议Socket代码示例5 UDP协议Socket代码示例6 Socket的常用类3. HTTP什么是Http协议Socket和http的区别和应用场景什么是http的请求体http的响应报文有哪些http和https的区别HTTPS工作原理一次完整的HTTP请求所经历几个步骤?常用HTTP状态码是怎么分类的有哪些常见的状态码Http协议中有那些请求方式GET方法与POST方法的区别http版本的对比什么是对称加密与非对称加密cookie和session对于HTTP有什么用cookie与session区别cookie与session区别什么是网络编程 网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度不就是把一个设备中的数据发送给其他设备然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式的也就是一个设备发送请求数据给另外一个然后接收另一个设备的反馈。在网络编程中发起连接程序也就是发送第一次请求的程序被称作客户端(Client)等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动而服务器为了能够时刻相应连接则需要一直启动。 例如以打电话为例首先拨号的人类似于客户端接听电话的人必须保持电话畅通类似于服务器。连接一旦建立以后就客户端和服务器端就可以进行数据传递了而且两者的身份是等价的。在一些程序中程序既有客户端功能也有服务器端功能最常见的软件就是QQ、微信这类软件了。
网络编程中两个主要的问题
一个是如何准确的定位网络上一台或多台主机另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位数据传输的路由由IP地址可以唯一地确定Internet上的一台主机。 而TCP层则提供面向应用的可靠TCP的或非可靠UDP的数据传输机制这是网络编程的主要对象一般不需要关心IP层是如何处理数据的。 目前较为流行的网络编程模型是客户机/服务器C/S结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行监听网络端口一旦有客户请求就会启动一个服务进程来响应该客户同时自己继续监听服务端口使后来的客户也 能及时得到服务。
网络协议是什么
在计算机网络要做到井井有条的交换数据就必须遵守一些事先约定好的规则比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。
为什么要对网络协议分层
简化问题难度和复杂度。由于各层之间独立我们可以分割大问题为小问题。 灵活性好。当其中一层的技术变化时只要层间接口关系保持不变其他层不受影响。 易于实现和维护。 促进标准化工作。分开后每层功能可以相对简单地被描述。
计算机网络体系结构 OSI参考模型 OSIOpen System Interconnect即开放式系统互联。一般都叫OSI参考模型是ISO国际标准化组织组织在1985年研究的网络互连模型。ISO为了更好的使网络应用更为普及推出了OSI参考模型这样所有的公司都按照统一的标准来指定自己的网络就可以互通互联了。OSI定义了网络互连的七层框架物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP参考模型 TCP/IP四层协议数据链路层、网络层、传输层、应用层 应用层 应用层最靠近用户的一层是为计算机用户提供应用接口也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有HTTPHTTPSFTPTELNET等。传输层 建立了主机端到端的链接传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的TCP UDP就是在这一层。端口号既是这里的“端”。网络层 本层通过IP寻址来建立两个节点之间的连接为源端的运输层送来的分组选择合适的路由和交换节点正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。数据链路层 通过一些规程或协议来控制这些数据的传输以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路这样就构成了数据链路
1 TCP / UDP
1.1 什么是TCP/IP和UDP TCP/IP即传输控制/网络协议是面向连接的协议发送数据前要先建立连接(发送方和接收方的成对的两个之间必须建 立连接)TCP提供可靠的服务也就是说通过TCP连接传输的数据不会丢失没有重复并且按顺序到达 UDP它是属于TCP/IP协议族中的一种。是无连接的协议发送数据前不需要建立连接是没有可靠性的协议。因为不需要建立连接所以可以在在网络上以任何可能的路径传输因此能否到达目的地到达目的地的时间以及内容的正确性都是不能被保证的。
1.2 TCP与UDP区别 TCP是面向连接的协议发送数据前要先建立连接TCP提供可靠的服务也就是说通过TCP连接传输的数据不会丢失没有重复并且按顺序到达 UDP是无连接的协议发送数据前不需要建立连接是没有可靠性 TCP通信类似于于要打个电话接通了确认身份后才开始进行通行 UDP通信类似于学校广播靠着广播播报直接进行通信。 TCP只支持点对点通信UDP支持一对一、一对多、多对一、多对多 TCP是面向字节流的UDP是面向报文的 面向字节流是指发送数据时以字节为单位一个数据包可以拆分成若干组进行发送而UDP一个报文只能一次发完。 TCP首部开销20字节比UDP首部开销8字节要大 UDP 的主机不需要维持复杂的连接状态表
1.3 TCP和UDP的应用场景
对某些实时性要求比较高的情况使用UDP比如游戏媒体通信实时直播即使出现传输错误也可以容忍其它大部分情况下HTTP都是用TCP因为要求传输的内容可靠不出现丢失的情况
1.4 形容一下TCP和UDP TCP通信可看作打电话 李三(拨了个号码)喂是王五吗 王五哎您谁啊 李三我是李三我想给你说点事儿你现在方便吗 王五哦我现在方便你说吧。 甲那我说了啊 乙你说吧。 (连接建立了接下来就是说正事了…) UDP通信可看为学校里的广播 播音室喂喂喂全体操场集合
1.5 运行在TCP 或UDP的应用层协议分析。 运行在TCP协议上的协议 HTTPHypertext Transfer Protocol超文本传输协议主要用于普通浏览。HTTPSHTTP over SSL安全超文本传输协议,HTTP协议的安全版本。FTPFile Transfer Protocol文件传输协议用于文件传输。POP3Post Office Protocol, version 3邮局协议收邮件用。SMTPSimple Mail Transfer Protocol简单邮件传输协议用来发送电子邮件。TELNETTeletype over the Network网络电传通过一个终端terminal登陆到网络。SSHSecure Shell用于替代安全性差的TELNET用于加密安全登陆用。 运行在UDP协议上的协议 BOOTPBoot Protocol启动协议应用于无盘设备。NTPNetwork Time Protocol网络时间协议用于网络同步。DHCPDynamic Host Configuration Protocol动态主机配置协议动态配置IP地址。 运行在TCP和UDP协议上 DNSDomain Name Service域名服务用于完成地址查找邮件转发等工作。ECHOEcho Protocol回绕协议用于查错及测量应答时间运行在TCP和UDP协议上。SNMPSimple Network Management Protocol简单网络管理协议用于网络信息的收集和网络管理。DHCPDynamic Host Configuration Protocol动态主机配置协议动态配置IP地址。ARPAddress Resolution Protocol地址解析协议用于动态解析以太网硬件的地址。
什么是ARP协议 (Address Resolution Protocol) ARP协议完成了IP地址与物理地址的映射。每一个主机都设有一个 ARP 高速缓存里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当源主机要发送数据包到目的主机时会先检查自己的ARP高速缓存中有没有目的主机的MAC地址如果有就直接将数据包发到这个MAC地址如果没有就向所在的局域网发起一个ARP请求的广播包在发送自己的 ARP 请求时同时会带上自己的 IP 地址到硬件地址的映射收到请求的主机检查自己的IP地址和目的主机的IP地址是否一致如果一致则先保存源主机的映射到自己的ARP缓存然后给源主机发送一个ARP响应数据包。源主机收到响应数据包之后先添加目的主机的IP地址与MAC地址的映射再进行数据传送。如果源主机一直没有收到响应表示ARP查询失败。 如果所要找的主机和源主机不在同一个局域网上那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址然后把分组发送给这个路由器让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
什么是NAT (Network Address Translation, 网络地址转换)
用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址分为静态转换转换得到的全球IP地址固定不变和动态NAT转换。
从输入址到获得页面的过程?
浏览器查询 DNS获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询如果要查询的域名包含在本地配置区域资源中则返回解析结果给客户机完成域名解析(此解析具有权威性)如果要查询的域名不由本地DNS服务器区域解析但该服务器已缓存了此网址映射关系则调用这个IP地址映射完成域名解析此解析不具有权威性。如果本地域名服务器并未缓存该网址映射关系那么将根据其设置发起递归查询或者迭代查询浏览器获得域名对应的IP地址以后浏览器向服务器请求建立链接发起三次握手TCP/IP链接建立起来后浏览器向服务器发送HTTP请求服务器接收到这个请求并根据路径参数映射到特定的请求处理器进行处理并将处理结果及相应的视图返回给浏览器浏览器解析并渲染视图若遇到对js文件、css文件及图片等静态资源的引用则重复上述步骤并向服务器请求这些资源浏览器根据其请求到的资源、数据渲染页面最终向用户呈现一个完整的页面。
1.6 TCP的三次握手
1.6.1 什么是TCP的三次握手
在网络数据传输中传输层协议TCP是要建立连接的可靠传输TCP建立连接的过程我们称为三次握手。
1.6.2 三次握手的具体细节 第一次握手Client将SYN置1随机产生一个初始序列号seq发送给Server进入SYN_SENT状态第二次握手Server收到Client的SYN1之后知道客户端请求建立连接将自己的SYN置1ACK置1产生一个acknowledge numbersequence number1并随机产生一个自己的初始序列号发送给客户端进入SYN_RCVD状态第三次握手客户端检查acknowledge number是否为序列号1ACK是否为1检查正确之后将自己的ACK置为1产生一个acknowledge number服务器发的序列号1发送给服务器进入ESTABLISHED状态服务器检查ACK为1和acknowledge number为序列号1之后也进入ESTABLISHED状态完成三次握手连接建立。
简单来说就是
客户端向服务端发送SYN服务端返回SYN,ACK客户端发送ACK
1.6.3 用现实理解三次握手的具体细节 三次握手的目的是建立可靠的通信信道主要的目的就是双方确认自己与对方的发送与接收机能正常。 第一次握手客户什么都不能确认服务器确认了对方发送正常第二次握手客户确认了自己发送、接收正常对方发送、接收正常服务器确认 了自己接收正常对方发送正常第三次握手客户确认了自己发送、接收正常对方发送、接收正常服务器确认 了自己发送、接收正常对方发送接收正常 所以三次握手就能确认双发收发功能都正常缺一不可。
1.6.4 建立连接可以两次握手吗为什么?
不可以。因为可能会出现已失效的连接请求报文段又传到了服务器端。 client 发出的第一个连接请求报文段并没有丢失而是在某个网络结点长时间的滞留了以致延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文段。但 server 收到此失效的连接请求报文段后就误认为是 client 再次发出的一个新的连接请求。于是就向 client 发出确认报文段同意建立连接。假设不采用 “三次握手”那么只要 server 发出确认新的连接就建立了。由于现在 client 并没有发出建立连接的请求因此不会理睬 server 的确认也不会向 server 发送数据。但 server 却以为新的运输连接已经建立并一直等待 client 发来数据。这样server 的很多资源就白白浪费掉了。采用 “三次握手” 的办法可以防止上述现象发生。例如刚才那种情况client 不会向 server 的确认发出确认。server 由于收不到确认就知道 client 并没有要求建立连接。而且两次握手无法保证Client正确接收第二次握手的报文Server无法确认Client是否收到也无法保证Client和Server之间成功互换初始序列号。
1.6.5 可以采用四次握手吗为什么
这个肯定可以。三次握手都可以保证连接成功了何况是四次但是会降低传输的效率。
1.6.6 第三次握手中如果客户端的ACK未送达服务器会怎样 Server端由于Server没有收到ACK确认因此会每隔 3秒 重发之前的SYNACK默认重发五次之后自动关闭连接进入CLOSED状态Client收到后会重新传ACK给Server。 Client端会出现两种情况 在Server进行超时重发的过程中如果Client向服务器发送数据数据头部的ACK是为1的所以服务器收到数据之后会读取 ACK number进入 establish 状态在Server进入CLOSED状态之后如果Client向服务器发送数据服务器会以RST包应答。
1.6.7 如果已经建立了连接但客户端出现了故障怎么办
服务器每收到一次客户端的请求后都会重新复位一个计时器时间通常是设置为2小时若两小时还没有收到客户端的任何数据服务器就会发送一个探测报文段以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应服务器就认为客户端出了故障接着就关闭连接。
1.6.8 初始序列号是什么
TCP连接的一方A随机选择一个32位的序列号Sequence Number作为发送数据的初始序列号Initial Sequence NumberISN比如为1000以该序列号为原点对要传送的数据进行编号1001、1002…三次握手时把这个初始序列号传送给另一方B以便在传输数据时B可以确认什么样的数据编号是合法的同时在进行数据传输时A还可以确认B收到的每一个字节如果A收到了B的确认编号acknowledge number是2001就说明编号为1001-2000的数据已经被B成功接受。
1.7 TCP的四次挥手
1.7.1 什么是TCP的四次挥手
在网络数据传输中传输层协议断开连接的过程我们称为四次挥手
1.7.2 四次挥手的具体细节 第一次挥手Client将FIN置为1发送一个序列号seq给Server进入FIN_WAIT_1状态第二次挥手Server收到FIN之后发送一个ACK1acknowledge number收到的序列号1进入CLOSE_WAIT状态。此时客户端已经没有要发送的数据了但仍可以接受服务器发来的数据。第三次挥手Server将FIN置1发送一个序列号给Client进入LAST_ACK状态第四次挥手Client收到服务器的FIN后进入TIME_WAIT状态接着将ACK置1发送一个acknowledge number序列号1给服务器服务器收到后确认acknowledge number后变为CLOSED状态不再向客户端发送数据。客户端等待2*MSL报文段最长寿命时间后也进入CLOSED状态。完成四次挥手。
1.7.3 用现实理解三次握手的具体细节TCP的四次挥手 四次挥手断开连接是因为要确定数据全部传书完了 客户与服务器交谈结束之后客户要结束此次会话就会对服务器说我要关闭连接了第一 次挥手服务器收到客户的消息后说好的你要关闭连接了。第二次挥手然后服务器确定了没有话要和客户说了服务器就会对客户说我要关闭连接了。(第三次挥 手)客户收到服务器要结束连接的消息后说已收到你要关闭连接的消息。(第四次挥手)才关闭
1.7.4 为什么不能把服务器发送的ACK和FIN合并起来变成三次挥手CLOSE_WAIT状态意义是什么
因为服务器收到客户端断开连接的请求时可能还有一些数据没有发完这时先回复ACK表示接收到了断开连接的请求。等到数据发完之后再发FIN断开服务器到客户端的数据传送。
1.7.5 如果第二次挥手时服务器的ACK没有送达客户端会怎样
客户端没有收到ACK确认会重新发送FIN请求。
1.7.6 客户端TIME_WAIT状态的意义是什么
第四次挥手时客户端发送给服务器的ACK有可能丢失TIME_WAIT状态就是用来重发可能丢失的ACK报文。如果Server没有收到ACK就会重发FIN如果Client在2*MSL的时间内收到了FIN就会重新发送ACK并再次等待2MSL防止Server没有收到ACK而不断重发FIN。 MSL(Maximum Segment Lifetime)指一个片段在网络中最大的存活时间2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSLClient都没有再次收到FIN那么Client推断ACK已经被成功接收则结束TCP连接。
2 Socket
1 什么是Socket 网络上的两个程序通过一个双向的通讯连接实现数据的交换这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面一个Socket由一个IP地址和一个端口号唯一确定。 但是Socket所支持的协议种类也不光TCP/IP、UDP因此两者之间是没有必然联系的。在Java环境下Socket编程主要是指基于TCP/IP协议的网络编程。 socket连接就是所谓的长连接客户端和服务器需要互相连接理论上客户端和服务器端一旦建立起连接将不会主动断掉的但是有时候网络波动还是有可能的 Socket偏向于底层。一般很少直接使用Socket来编程框架底层使用Socket比较多 2 socket属于网络的那个层面 Socket是应用层与TCP/IP协议族通信的中间软件抽象层它是一组接口。在设计模式中Socket其实就是一个外观模式它把复杂的TCP/IP协议族隐藏在Socket接口后面对用户来说一组简单的接口就是全部让Socket去组织数据以符合指定的协议。
3 Socket通讯的过程 基于TCP服务器端先初始化Socket然后与端口绑定(bind)对端口进行监听(listen)调用accept阻塞等待客户端连接。在这时如果有个客户端初始化一个Socket然后连接服务器(connect)如果连接成功这时客户端与服务器端的连接就建立了。客户端发送数据请求服务器端接收请求并处理请求然后把回应数据发送给客户端客户端读取数据最后关闭连接一次交互结束。 基于UDPUDP 协议是用户数据报协议的简称也用于网络数据的传输。虽然 UDP 协议是一种不太可靠的协议但有时在需要较快地接收数据并且可以忍受较小错误的情况下UDP 就会表现出更大的优势。我客户端只需要发送服务端能不能接收的到我不管
4 TCP协议Socket代码示例
先运行服务端在运行客户端
服务端
package com.test.io;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;//TCP协议Socket使用BIO进行通行服务端
public class BIOServer {// 在main线程中执行下面这些代码public static void main(String[] args) {//1单线程服务ServerSocket server null;Socket socket null;InputStream in null;OutputStream out null;try {server new ServerSocket(8000);System.out.println(服务端启动成功监听端口为8000等待客户端连接...);while (true){socket server.accept(); //等待客户端连接System.out.println(客户连接成功客户信息为 socket.getRemoteSocketAddress());in socket.getInputStream();byte[] buffer new byte[1024];int len 0;//读取客户端的数据while ((len in.read(buffer)) 0) {System.out.println(new String(buffer, 0, len));}//向客户端写数据out socket.getOutputStream();out.write(hello!.getBytes());}} catch (IOException e) {e.printStackTrace();}}
}客户端
package com.test.io;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;//TCP协议Socket客户端
public class Client01 {public static void main(String[] args) throws IOException {//创建套接字对象socket并封装ip与portSocket socket new Socket(127.0.0.1, 8000);//根据创建的socket对象获得一个输出流OutputStream outputStream socket.getOutputStream();//控制台输入以IO的形式发送到服务器System.out.println(TCP连接成功 \n请输入);while(true){byte[] car new Scanner(System.in).nextLine().getBytes();outputStream.write(car);System.out.println(TCP协议的Socket发送成功);//刷新缓冲区outputStream.flush();}}
}先运行服务端在运行客户端。测试结果发送成功 ·
5 UDP协议Socket代码示例
先运行服务端在运行客户端
服务端
//UDP协议Socket服务端
public class Server1 {public static void main(String[] args) {try {//DatagramSocket代表声明一个UDP协议的SocketDatagramSocket socket new DatagramSocket(8888);//byte数组用于数据存储。byte[] car new byte[1024];//DatagramPacket 类用来表示数据报包DatagramPacketDatagramPacket packet new DatagramPacket(car, car.length);// //创建DatagramPacket的receive()方法来进行数据的接收,等待接收一个socket请求后才执行后续操作System.out.println(等待UDP协议传输数据);socket.receive(packet);//packet.getLength返回将要发送或者接收的数据的长度。int length packet.getLength();System.out.println(啥东西来了 new String(car, 0, length));socket.close();System.out.println(UDP协议Socket接受成功);} catch (IOException e) {e.printStackTrace();}}
}客户端
//UDP协议Socket客户端
public class Client1 {public static void main(String[] args) {try {//DatagramSocket代表声明一个UDP协议的SocketDatagramSocket socket new DatagramSocket(2468);//字符串存储人Byte数组byte[] car UDP协议的Socket请求有可能失败哟.getBytes();//InetSocketAddress类主要作用是封装端口InetSocketAddress address new InetSocketAddress(127.0.0.1, 8888);//DatagramPacket 类用来表示数据报包DatagramPacketDatagramPacket packet new DatagramPacket(car, car.length, address);//send() 方法发送数据包。socket.send(packet);System.out.println(UDP协议的Socket发送成功);socket.close();} catch (Exception e) {e.printStackTrace();}}
}先运行服务端在运行客户端。测试结果成功发送成功
6 Socket的常用类
类名用于作用SocketTCP协议Socket类同时工作于客户端和服务端所有方法都是通用的这个类三个主要作用校验包信息发起连接Client操作流数据Client/ServerServerSocketTCP协议ServerSocket表示为服务端主要作用就是绑定并监听一个服务器端口为每个建立连接的客户端“克隆/映射”一个Socket对象具体数据操作都是通过这个Socket对象完成的ServerSocket只关注如何和客户端建立连接DatagramSocketODP协议DatagramSocket 类用于表示发送和接收数据报包的套接字。DatagramPacketODP协议DatagramPacket 类用来表示数据报包数据报包用来实现无连接包投递服务。InetAddressIP端口号Java提供了InetAddress类来代表互联网协议IP地址InetAddress类没有提供构造器而是提供了如下两个静态方法来获取InetAddress实例InetSocketAddressIP端口号在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口但Socket类中并未提供这种方式而是靠SocketAddress的子类InetSocketAddress来实现 IP 地址 端口号的创建不依赖任何协议。
3. HTTP
什么是Http协议 Http协议是对客户端和服务器端之间数据之间实现可靠性的传输文字、图片、音频、视频等超文本数据的规范格式简称为“超文本传输协议” Http协议属于应用层及用户访问的第一层就是http
Socket和http的区别和应用场景 Socket连接就是所谓的长连接理论上客户端和服务器端一旦建立起连接将不会主动断掉 Socket适用场景网络游戏银行持续交互直播在线视屏等。 http连接就是所谓的短连接即客户端向服务器端发送一次请求服务器端响应后连接即会断开等待下次连接 http适用场景公司OA服务互联网服务电商办公网站等等等等
什么是http的请求体
HTTP请求体是我们请求数据时先发送给服务器的数据毕竟我向服务器那数据先要表明我要什么吧HTTP请求体由请求行 、请求头、请求数据组成的注意GIT请求是没有请求体的
POST请求
GIT请求是没有请求体的
发现只有请求行和请求头少了个请求体
http的响应报文有哪些 http的响应报是服务器返回给我们的数据必须先有请求体再有响应报文 响应报文包含三部分 状态行、响应首部字段、响应内容实体实现 http和https的区别 其实HTTPS就是从HTTP加上加密处理一般是SSL安全通信线路认证完整性保护 区别
http需要拿到ca证书需要钱的端口不一样http是80https443http是超文本传输协议信息是明文传输https则是具有安全性的ssl加密传输协议。http和https使用的是完全不同的连接方式http的连接很简单是无状态的HTTPS 协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议比http协议安全。
HTTPS工作原理
一、首先HTTP请求服务端生成证书客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥RSA加密等进行校验 二、客户端如果校验通过后就根据证书的公钥的有效 生成随机数随机数使用公钥进行加密RSA加密 三、消息体产生的后对它的摘要进行MD5或者SHA1算法加密此时就得到了RSA签名 四、发送给服务端此时只有服务端RSA私钥能解密。 五、解密得到的随机数再用AES加密作为密钥此时的密钥只有客户端和服务端知道。
一次完整的HTTP请求所经历几个步骤?
HTTP通信机制是在一次完整的HTTP通信过程中Web浏览器与Web服务器之间将完成下列7个步骤 建立TCP连接 怎么建立连接的看上面的三次捂手 Web浏览器向Web服务器发送请求行 一旦建立了TCP连接Web浏览器就会向Web服务器发送请求命令。例如GET /sample/hello.jsp HTTP/1.1。 Web浏览器发送请求头 浏览器发送其请求命令之后还要以头信息的形式向Web服务器发送一些别的信息之后浏览器发送了一空白行来通知服务器它已经结束了该头信息的发送。 Web服务器应答 客户机向服务器发出请求后服务器会客户机回送应答 HTTP/1.1 200 OK 应答的第一部分是协议的版本号和应答状态码。 Web服务器发送应答头 正如客户端会随同请求发送关于自身的信息一样服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。 Web服务器向浏览器发送数据 Web服务器向浏览器发送头信息后它会发送一个空白行来表示头信息的发送到此为结束接着它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。 Web服务器关闭TCP连接
常用HTTP状态码是怎么分类的有哪些常见的状态码 HTTP状态码表示客户端HTTP请求的返回结果、标识服务器处理是否正常、表明请求出现的错误等。 状态码的类别
类别描述1xx指示信息–表示请求已接收正在处理2xx成功–表示请求已被成功接收、理解、接受3xx重定向–要完成请求必须进行更进一步的操作4xx客户端错误–请求有语法错误或请求无法实现5xx服务器端错误–服务器未能实现合法的请求
常见的状态码
状态码描述200请求被正常处理204请求被受理但没有资源可以返回206客户端只是请求资源的一部分服务器只对请求的部分资源执行GET方法相应报文中通过Content-Range指定范围的资源。301永久性重定向302临时重定向303与302状态码有相似功能只是它希望客户端在请求一个URI的时候能通过GET方法重定向到另一个URI上304发送附带条件的请求时条件不满足时返回与重定向无关307临时重定向与302类似只是强制要求使用POST方法400请求报文语法有误服务器无法识别401请求需要认证403请求的对应资源禁止被访问404服务器无法找到对应资源500服务器内部错误503服务器正忙
Http协议中有那些请求方式
请求方式描述GET用于请求访问已经被URI统一资源标识符识别的资源可以通过URL传参给服务器POST用于传输信息给服务器主要功能与GET方法类似但一般推荐使用POST方式。PUT传输文件报文主体中包含文件内容保存到对应URI位置。HEAD获得报文首部与GET方法类似只是不返回报文主体一般用于验证URI是否有 效。PATCH客户端向服务器传送的数据取代指定的文档的内容(部分取代)TRACE回显客户端请求服务器的原始请求报文用于回环诊断DELETE删除文件与PUT方法相反删除对应URI位置的文件。OPTIONS查询相应URI支持的HTTP方法。
GET方法与POST方法的区别 区别一 get重点在从服务器上获取资源post重点在向服务器发送数据 区别二 Get传输的数据量小因为受URL长度限制但效率较高 Post可以传输大量数据所以上传文件时只能用Post方式 区别三 get是不安全的因为get请求发送数据是在URL上是可见的可能会泄露私密信息如密码等 post是放在请求头部的是安全的
http版本的对比 HTTP1.0版本的特性 早先1.0的HTTP版本是一种无状态、无连接的应用层协议。HTTP1.0规定浏览器和服务器保持短暂的连接浏览器的每次请求都需要与服务器建立一个TCP连接服务器处理完成后立即断开TCP连接无连接服务器不跟踪每个客户端也不记录过去的请求无状态。 HTTP1.1版本新特性 默认持久连接节省通信量只要客户端服务端任意一端没有明确提出断开TCP连接就一直保持连接可以发送多次HTTP请求管线化客户端可以同时发出多个HTTP请求而不用一个个等待响应断点续传原理 HTTP2.0版本的特性 二进制分帧采用二进制格式的编码将其封装首部压缩设置了专门的首部压缩设计的HPACK算法。流量控制设置了接收某个数据流的多少字节一些流量控制多路复用可以在共享TCP链接的基础上同时发送请求和响应请求优先级可以通过优化这些帧的交错和传输顺序进一步优化性能服务器推送就是服务器可以对一个客户端请求发送多个响应。服务器向客户端推送资 源无需客户端明确的请求。重大更新
什么是对称加密与非对称加密 对称密钥加密是指加密和解密使用同一个密钥的方式这种方式存在的最大问题就是密钥发送问题即如何安全地将密钥发给对方 而非对称加密是指使用一对非对称密钥即公钥和私钥公钥可以随意发布但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理对方接收到加密信息后使用自己的私钥进行解密。 由于非对称加密的方式不需要发送用来解密的私钥所以可以保证安全性但是和对称加密比起来非常的慢
cookie和session对于HTTP有什么用
HTTP协议本身是无法判断用户身份。所以需要cookie或者session
什么是cookie
cookie是由Web服务器保存在用户浏览器上的文件key-value格式可以包含用户相关的信息。客户端向服务器发起请求就提取浏览器中的用户信息由http发送给服务器
什么是session session 是浏览器和服务器会话过程中服务器会分配的一块储存空间给session。 服务器默认为客户浏览器的cookie中设置 sessionid这个sessionid就和cookie对应浏览器在向服务器请求过程中传输的cookie 包含 sessionid 服务器根据传输cookie 中的 sessionid 获取出会话中存储的信息然后确定会话的身份信息。
cookie与session区别
cookie数据存放在客户端上安全性较差session数据放在服务器上安全性相对更高单个cookie保存的数据不能超过4Ksession无此限制 信息后使用自己的私钥进行解密。 由于非对称加密的方式不需要发送用来解密的私钥所以可以保证安全性但是和对称加密比起来非常的慢
cookie和session对于HTTP有什么用
HTTP协议本身是无法判断用户身份。所以需要cookie或者session
什么是cookie
cookie是由Web服务器保存在用户浏览器上的文件key-value格式可以包含用户相关的信息。客户端向服务器发起请求就提取浏览器中的用户信息由http发送给服务器
什么是session session 是浏览器和服务器会话过程中服务器会分配的一块储存空间给session。 服务器默认为客户浏览器的cookie中设置 sessionid这个sessionid就和cookie对应浏览器在向服务器请求过程中传输的cookie 包含 sessionid 服务器根据传输cookie 中的 sessionid 获取出会话中存储的信息然后确定会话的身份信息。
cookie与session区别
cookie数据存放在客户端上安全性较差session数据放在服务器上安全性相对更高单个cookie保存的数据不能超过4Ksession无此限制session一定时间内保存在服务器上当访问增多占用服务器性能考虑到服务器性能方面应当使用cookie。 文章转载自: http://www.morning.qtzwh.cn.gov.cn.qtzwh.cn http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.lveyue.com.gov.cn.lveyue.com http://www.morning.rbsxf.cn.gov.cn.rbsxf.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.qnbzs.cn.gov.cn.qnbzs.cn http://www.morning.ymqfx.cn.gov.cn.ymqfx.cn http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn http://www.morning.tcxk.cn.gov.cn.tcxk.cn http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn http://www.morning.mkbc.cn.gov.cn.mkbc.cn http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn http://www.morning.wcft.cn.gov.cn.wcft.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com http://www.morning.nfpct.cn.gov.cn.nfpct.cn http://www.morning.tjkth.cn.gov.cn.tjkth.cn http://www.morning.ndyrb.com.gov.cn.ndyrb.com http://www.morning.mqss.cn.gov.cn.mqss.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.yjdql.cn.gov.cn.yjdql.cn http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn http://www.morning.fllfc.cn.gov.cn.fllfc.cn http://www.morning.fwkpp.cn.gov.cn.fwkpp.cn http://www.morning.blbys.cn.gov.cn.blbys.cn http://www.morning.mrgby.cn.gov.cn.mrgby.cn http://www.morning.cknws.cn.gov.cn.cknws.cn http://www.morning.nhdmh.cn.gov.cn.nhdmh.cn http://www.morning.bkwd.cn.gov.cn.bkwd.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.gxeqedd.cn.gov.cn.gxeqedd.cn http://www.morning.ksggl.cn.gov.cn.ksggl.cn http://www.morning.qbtj.cn.gov.cn.qbtj.cn http://www.morning.mcjrf.cn.gov.cn.mcjrf.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.rqzyz.cn.gov.cn.rqzyz.cn http://www.morning.gyxwh.cn.gov.cn.gyxwh.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.mgmqf.cn.gov.cn.mgmqf.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.nzsdr.cn.gov.cn.nzsdr.cn http://www.morning.fjlsfs.com.gov.cn.fjlsfs.com http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn http://www.morning.chmcq.cn.gov.cn.chmcq.cn http://www.morning.cokcb.cn.gov.cn.cokcb.cn http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.gjlml.cn.gov.cn.gjlml.cn http://www.morning.xkjrq.cn.gov.cn.xkjrq.cn http://www.morning.snkry.cn.gov.cn.snkry.cn http://www.morning.gprzp.cn.gov.cn.gprzp.cn http://www.morning.pyncm.cn.gov.cn.pyncm.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.wsyq.cn.gov.cn.wsyq.cn http://www.morning.wcft.cn.gov.cn.wcft.cn http://www.morning.xppj.cn.gov.cn.xppj.cn http://www.morning.xjmyq.com.gov.cn.xjmyq.com http://www.morning.fnhxp.cn.gov.cn.fnhxp.cn http://www.morning.zdsqb.cn.gov.cn.zdsqb.cn http://www.morning.nfks.cn.gov.cn.nfks.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.jtwck.cn.gov.cn.jtwck.cn http://www.morning.ttryd.cn.gov.cn.ttryd.cn http://www.morning.ltywr.cn.gov.cn.ltywr.cn http://www.morning.jgrjj.cn.gov.cn.jgrjj.cn http://www.morning.tsqpd.cn.gov.cn.tsqpd.cn