互联网通信


互联网通信(后期自己对内容进行完善)

1.分层(主要是为了解耦)

exec 9<> /dev/tcp/www.baidu.com/80
#9表示文件描述符
#<>:表示输入输出流
#exec
#/dev/tcp/www.baidu.com/80  在linux表示文件,linux一切皆文件(摄像头、显示器的等)
echo -e "GET / HTTP/1.0\n" 1>& 9
##  1>&  指令表示输出指向一个文件描述符
cat 0<& 9

传输控制层(UDP、TCP)

TCP面向连接的、可靠的传输协议(三次握手)

1.客户端发送SYN给服务器请求连接,其中约定数据包大小

2.服务器给客户端发送syn+ack(该ack=客户端seq+1)

3.客户端发送ack给服务器进行确认

当传输层建立连接后双方的操作系统开辟资源

为什么两次连接不可行?

对于两次连接时:

客户端A给服务器B发送请求,由于网络时延导致A发送的消息在网络中过久,A重新发送数据给服务器B,B与A完成正常的数据交换后,延时的数据到达服务器,B等待A连接,A已经拿到资源,不回复服务器B会导致B一致处于监听状态。

四次挥手

1.客户端发送fin给服务器请求连接,进入FIN_WAIT_1状态

2.服务器给客户端发送ack,Server进入LAST+ACK状态(不确认是否断开,只表示接收到消息)

3.服务器给客户端发送fin,Server进入LAST_ACK状态(服务器确认断开)

3.客户端发送ack给服务器进行确认,客户端进入TIME_WAIT状态,Server进入CLOSED状态

#linux下抓包

yum install tcpdump

tcpdump -nn -i eth0 port 80

curl url —> 例如 curl www.baidu.com:80

网络层(ip)

ip地址点分字节,ip地址与子网掩码进行按位与操作得到网络号(网关)

linux路由表:route -n

arp协议,主机获取网关的mac的地址进行广播,网关将自己的mac地址交给主机,主机进行数据与ip地址封装

arp -d 删除的路由中的记录 && curl url

tcpdump -nn -i eth0 port 80 or arp

Http协议的一些基本概念:

HTTP超文本传输协议是一个基于请求与相应模式的,无状态的,应用层协议,常基于TCP的连接

http协议内容:请求行、请求头、空行、数据

客户端请求消息:请求方法,URL,协议版本为请求行,请求头部,头部字段名,值,请求数据

服务器端响应消息:状态行,消息报头,空行,响应正文

URI:统一资源标识符 访问资源的命名机制,存放资源的主机名、资源的名称由路径决定

URL:统一资源定位符 URN:统一资源命名

Http:的方法有:

1.GET为获取资源数据get方法用于请求指定的页面信息,并返回请求消息的主体

2.POST为提交资源数据post方法用于向指定的资源提交数据

3.PUT为更新资源数据

4.DELETE为删除资源数据

5.HEAD为读取资源的元数据

6.OPTIONS为读取资源多支持的所有请求方法

7.TRACE为回显服务器收到额请求

8.CONNECT为保留将来使用

多个socket对应一个进程:多路复用器:EPOLL

netty需要了解线程池相关知识


文章作者: it星
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 it星 !
 上一篇
java高并发 java高并发
it星
java高并发基础概念什么是进程? 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空 间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关
下一篇 
Bos项目的简单记录 Bos项目的简单记录
BOS项目 1.数据库环境搭建: net start mysql mysql -uroot -p123 create database bos32 character set utf-8; use bos32; —-查看所有的用户
2020-04-22
  目录