网络编程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.头部长度是固定的(通过头部来获取接收数据的属性)


原文地址:https://www.cnblogs.com/bailongcaptain/p/12726153.html