java网络编程

1.基本网络

1.1 网络分层

五层:应用层、传输层、网络层、数据链路层、物理层

应用层

向用户传送数据的层叫应用层。解读数据,规定应用程序的数据格式。如:Http ftp Telnet SMTP POP3

传输层

transport layer 传输层负责确保各包以发送的顺序接收,并保证没有数据的丢失或者破坏。为实现这个目标,IP网络会给每个数据报添加一个附加首部,包含更多信息。这层包含两个协议:
TCP(Transmission Control Protocol)传输控制协议,这是一个开销很高的协议,支持对丢失或破坏的数据进行重传,并按照发送的顺序进行传送。
UDP( User Datagram Protocol) 数据报协议,它允许接收方检测被破坏的包,但不保证这些包以正确的顺序传送。但是UDP比TCP 快,Tcp称为可靠的协议,UDP为不可靠的协议。

网络层

该层决定如何将数据从发送发路由到接收方。定义了数据位和字节如何组织更大的分组,称为包。定义了寻址机制,不同计算机要按这个寻址地址查找对方。实际上这是两个协议:包含IPv4、IPv6。

IPV4 使用是32位地址,IPV6是128位地址。
v4是按照点号分隔,v6是冒号分隔。
在IPv4和IPv6中,数据按包在网际层传输,又称为数据报,
IPv4数据报包含长度20-60字节的首部及可达65515个字节数据的有效载荷。
IPv6的首部可达4G字节。16个字节,使用冒号分隔的8个区块 ,每个区块4个16进制数字,如FEHH:HHHH:UUUU:NNNN:8:YUHG。
IPV4 4个字节,32位的长度。255.255.255.255转成二进制就是32位数字。

IPv4数据报结构

数据链路层

控制网络层和物理层之间的传输通信。主要功能是如何在不可靠的物理线路上进行可靠传递。为保证传输,从网络层接收到的数据被分隔成特定的可被物理层传输的帧。帧是用来移动数据的结构包。它不仅包括原始数据,还包括发送方和接收方的物理地址以及纠错和控制信息。

物理层

负责比特流在节点间的传输,即负责物理传输。通俗来讲就是连接计算机的物理手段。

2.Http

http(超文本传输协议)主要应用于web浏览器和web服务器之间的一种传输协议。现在也适用在移动端,众多的移动设备中。

2.1三次握手和 四次挥手

在这里插入图片描述

2.1.1三次握手

第一次:客户端发送连接请求,将SYN =1,seq(sequence Number) 为x,客户端进入SYN_SENT状态。
第二次:服务端收到客户端SYN报文段,对SYN进行确认,设置ACK (x+1),同时发送SYN请求信息SYN=1,seq=y,服务器将上述信息SYN+ACK ,一并发给客户端,服务端进入SYN_RCVD。
第三次:客户端收到服务端的报文(SYN+ACK),然后将ACK设置为y+1,向服务端发送ACK报文段,发送完毕后,双方进入连接状态。

2.1.2 四次挥手

当客户端和服务端通过三次握手建立了TCP连接以后,当数据传送完毕,断开连接时就需要进行TCP的 四次挥手。其四次挥手如下所示。

  • 第一次挥手:客户端设置seq和ACK,向服务端发送一个FIN报文段。此时,客户端进入FIN_WAIT_1 状态,表示客户端没有数据要发送给服务端了。
  • 第二次挥手:服务端收到了客户端发送的FIN报文段,向客户端回了一个ACK报文段。
  • 第三次挥手:服务端向客户端发送 FIN 报文段,请求关闭连接,同时服务端进入LAST_ACK状态。
  • 第四次挥手:客户端收到服务端发送的FIN报文段,向服务端发送ACK报文段,然后客户端进入 TIME_WAIT状态。服务端收到客户端的ACK报文段以后,就关闭连接。此时,客户端等待2MSL(最大报 文段生存时间)后依然没有收到回复,则说明服务端已正常关闭,这样客户端也可以关闭连接了。

2.2 请求头属性:

待完善

2.2响应码:

100-199:表示提供信息的响应。
200-299:表示成功
300-399:表示重定向
400-499:客户端错误
500-599:服务器错误

keepAlive
http1.0 会为每个请求打开一个连接,这种形式花费的时间远高于传输的时间。因此在HTTP1.1后,服务器不必在发送响应后就关闭连接。可以在一个TCP连接上连续发送多个请求和响应。默认为ture

2.3 http 方法

get :从指定服务器获取数据
post: 把数据发送给服务器
put:允许客户端将文档放到服务器的抽象层结构中,不需要知道网站如何映射到本地的文件系统。
delete: 删除指定的资源文件
head:单纯只是获取请求头的信息。
options: 请求某个特定URL支持哪些选项。

3.Socket

sokcet 套接字:两台主机之间的一个连接。一旦建立了连接,本地和远程主机就可以从sokcet得到输入流和输出流,相互发送数据,且全双工,两台主机都可以同时发送和接收数据。
有7个基本操作;

  • 连接远程机器
  • 发送数据
  • 接收数据
  • 关闭连接
  • 绑定端口
  • 监听入站数据
  • 在绑定端口上接受来自远程机器的连接

Socket 客户端对象
ServerSocket 服务器对象
accept()

4.UDP

java中UDP的实现由两个类:DatagramPacket 和DatagramSocket

  • DatagramPacket类是将数据字节填充到UDP包里,称为数据报,由你来解包接收的数据报。
  • DatagramSocket类是可以收发数据报,要发送数据,要将数据放到DatagramPacket中,使用DatagramSocket发送这个包。要接收数据,可以从DatagramSocket中接收一个DatagramPacket对象,然后检查该包的内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值