标签:ftp listen 网络数 多少 结构 col pre 发送数据 点数据
IOS七层网络模型 | 五层网络模型 | TCP/IP分层模型 |
---|---|---|
应用层 | ||
表示层 | ||
会话层 | 应用层 | 应用层 |
传输层 | 传输层 | 传输层 |
网络层 | 网络层 | 网络层 |
数据链路层 | 数据链路层 | 网络接口 |
物理层 | 物理层 |
网络 | 协议 |
---|---|
网络接口 | ARP |
网络层 | IP、RIP、ICMP |
传输层 | TCP、UDP |
应用层 | FTP、HTTP、telnet |
1.16位端口号:告知主机该报文是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。
2.32位序号(sequence number):一次TCP通信过程中某个传输方向上的字节流的每个字节的编号。
3.32位确认号(acknowledgement number):用作对另一方发送来的TCP报文段的响应
4.4位头部:标识该TCP头部有多少个4字节,共表示最长15*4=60字节。
5.6位标志位:6位标志。URG(紧急指针是否有效)ACK(表示确认号是否有效)PSH(提示接收端应用程序应该立即从TCP接收缓冲区读走数据)RST(表示要求对方重新建立连接)SYN(表示请求建立一个连接)FIN(表示通知对方本端要关闭连接)
6.16位窗口大小:TCP流量控制,窗口指的是接收通告窗口,告诉对方本端TCP接收缓冲区还能容纳多少字节的数据。
7.16位校验和大小:对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。
8.16位紧急指针:一个正的偏移量,它和序号段的值相加表示最后一个紧急数据的下一字节的序号
TCP每发送一个报文段,就对这个报文段设置一次计时器,只要计时器设置的重传时间到了,但还没有收到确认,就要重传这一报文段,这个就叫作“超时重传”。
关键参数RTO :发送端发送数据后、重传数据前等待接收方收到该数据报文的ack时间。
设置长了:重发就会很慢,没有效率,性能差
设置短了:重发就快,会增加网络拥塞,导致更多的超时。
引入RTT(连接往返时间)动态设置
滑动窗口机制:TCP是双工的协议,会话的双方都可以同时接收、发送数据。TCP会话的双方各自维护一个“发送窗口”和一个”接收窗口“。TCP的窗口滑动技术通过动态改变窗口的大小来调节两台主机之间数据传输。
拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不过载。拥塞控制是个全局性的过程,和流量控制不同,流量控制点对点通信量的控制。
四个核心算法:
慢开始:先探测一下网络的拥塞程度,由小到大逐渐增加拥塞窗口的大小
拥塞避免:让拥塞窗口缓慢增长,每经过一个往返时间,拥塞窗口+1
快速重传:要求接收方在收到一个失序的报文段后就立即发出重复确认
快速恢复
socket-> bind->listen->accept->recv->close
(创建socket 绑定socket和端口号 监听端口号 接收来自客户端的连接请求 从socket中读取字符 关闭socket)
socket->connect->send->close
(创建socket 连接指定计算机的端口 向socket中写入信息 关闭socket)
基本的socket接口函数
1.socket函数
int socket(int domain,int type,int protocol)
2.bind函数
int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);
3.listen函数和connect函数
int listen(int sockfd,int backlog);
int connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen);
4.accept函数
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
5.read和write函数
ssize_t read(int fd,void *buf,size_t count);
ssize_t write(int fd,const void *buf,size_t count);
6.close函数
#include<unistd.h>
int close(int fd);
字节序:Little Endian Big Endian(所有的网络协议)
当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。
标签:ftp listen 网络数 多少 结构 col pre 发送数据 点数据
原文地址:https://www.cnblogs.com/alwayszzj/p/12502782.html