网络编程part2
计算机1: 计算机2:
应用层 应用层
socket socket
传输层 段 传输层
网络层 包 网络层
数据链路层 帧 数据链路层
物理层 <===========交互机===========> 物理层
客户端软件send 服务端软件recv
操作系统 操作系统
计算机硬件<====物理介质=====>计算机硬件
客户端软件send 服务端软件recv
操作系统 操作系统
计算机硬件<====物理介质=====>计算机硬件
ethernet头+ip头+tcp头+应用层的头+应用层数据
一、传输层 tcp/udp协议——基于端口
端口的范围是0-65535,其中0-1023是系统占用的端口
所以ip加上port可以标识到世界范围的任意一个基于网络通信的应用程序
基于ctp协议通信时——必须先建立一个双向通信的链接
三次握手建立链接:
建立链接是为了传数据做准备的,三次握手即可
四次挥手断开链接
断开链接时,由于链接内有数据传输,所以必须分四次断开
tcp协议是可靠传输的,发送数据必须等到对方确认后才算完成,才会将自己内存中的数据清理掉,否则重传。
udp协议是不可靠传输的(不需要确认,所以速度相对快)
TCP协议的半连接池:
backlog
[请求1,请求2,请求3...]
面对洪水攻击时,理论上的可以扩充backlog应对...
二、应用层
可以自定义协议——头部+数据
注意点:
1.头部:放对于数据的描述信息(接收方,数据类型,数据长度)
数据:数据部分
2.头部长度是固定的(通过头部来获取接收数据的属性)