Java高级部分总结

TCP&&UDP&&URL(传输层主要使用的协议)

1.UDP不提供复杂的控制机制,发送数据之前不需要建立连接。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。
2.不是可靠支付。
3.UDP支持一对一,一对多,多对一和多对多的交互通信。
4.UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用有用,如IP电话,实时视频会议等),UDP容易丢帧,但是发送的65507个字节不会被内部分片,可以整块发送,所以在制定协议时不用TCP那么复杂,发送和接收都很容易实现。工程应用中比较受欢迎。
5.TCP协议进行通信的两个应用进程:发送端、接受端

tcp 为什么要三次握手,两次不行吗?为什么?
为了实现可靠数据传输,TCP 协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中,哪些是已经被对方收到的。
三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤。
如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。

为什么建立连接是三次握手,四次不可以吗
第一次握手:
    Client什么都不能确认   
    Server确认了对方发送正常
第二次握手:
    Client确认:自己发送/接收正常,对方发送/接收正常
    Server确认:自己接收正常 ,对方发送正常
第三次握手:
    Client确认:自己发送/接收正常, 对方发送/接收正常
 	Server确认:自己发送/接收正常,对方发送/接收正常

为什么TCP连接的时候是3次,关闭的时候却是4次?
因为只有在客户端和服务端都没有数据要发送的时候才能断开TCP。而客户端发出FIN报文时只能保证客户端没有数据发了,服务端
还有没有数据发客户端是不知道的。而服务端收到客户端的FIN报文后只能先回复客户端一个确认报文来告诉客户端我服务端已经
收到你的FIN报文了,但我服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发FIN报文(所以不能一次性将确认报文和FIN报文发给客户端,就是这里多出来了一次)。

三次握手四次挥手
	三次握手的本质是确认通信双方收发数据的能力
	
	第一次握手
	Client将标志位SYN1,随机产生一个值seq=J,并将数据包发给Server
	Client进入SYN_SENT状态,等待Server确认
	
	第二次握手
	Server收到数据包后标志位SYN=1知道Client请求建立连接,Server将标志位SYNACK都置1,
	随机产生一个值,并将数据包发给Client确认连接请求,Server进入SYN_RCVD状态
	
	第三次握手
	Client收到确认后若ACK1,则将该数据包发送给ServerServer检查ACK1则连接建立成功,
	ClientServer进入ESTABLISHED状态完成三次握手,可以传输数据
	
	四次挥手的本质是关闭一个连接

	第一次挥手:
	Clien发送一个FIN,用来关闭ClientServer的数据传送,Client进入FIN_WAIT_1状态。
	
	第二次挥手:
	Server收到FIN后,发送一个ACKClient,Server进入CLOSE_WAIT状态。
	
	第三次挥手:
	Server发送一个FIN,用来关闭ServerClient的数据传送,Server进入LAST_ACK状态。
	
	第四次挥手:
	Client收到FIN后,Client进入TIME_WAIT状态,发送ACKServerServer进入CLOSED状态,完成四次握手。

1.TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。
2.提供可靠的服务TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流。(传输前,采用“三次握手”方式,是可靠的,释放连接采用“四次挥手”方式。)
3.每一条TCP连接只能是点到点的;
4.TCP可以进行大数据量的传输,虽然可靠,但是发送的数据被protocol内部分成了几块,分片发送,所以在用TCP传输的时候,在协议制定上要考虑发送数据连续接收,才能保证一个协议帧的数据正确接收
5.TCP协议进行通信的两个应用进程:客户端、服务端

URI :Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
URI 可以分为 URL, URN,或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式(URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。)。

GETPOST区别

Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。 
但是这种做法也不时绝对的,大部分人的做法也是按照上面的说法来的,但是也可以在get请求加上 
request body,给 post请求带上 URL 参数。

Get请求提交的url中的数据最多只能是2048字节(有限制),这个限制是浏览器或者服务器给添加的,http协议并
没有对url长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求。Post
请求则没有大小限制。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

Get执行效率却比Post方法好。Get是form提交的默认方法。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

什么是cookie

cookie是由Web服务器保存在用户浏览器上的小文件(key-value格式),包含用户相关的信息。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户身份。

什么是session

session是依赖Cookie实现的。session是服务器端对象

session 是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

cookie与session区别

存储位置与安全性:cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高;
存储空间:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,session无此限制
占用服务器资源:session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie。

JavaWeb知识点:
		四大作用域
			PageContextServletRequestHttpSessionServletContext;
		四个域对象
			pageContext、request、session、application
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值