《Linux学习笔记》:网络编程,暂不更新

TCP是有链接的

        不带数据的消息,只占一个序列号,只要个头

TCP的建立连接:

        三次握手:必须由客户端发起,如果

        SYN建立连接请求,客户端和服务端都有

(1)客户端->服务器

SYN(1bit)=1        seq(客户端序列号)=m

(2)客户端<-服务器

 ACK=1        SYN=1        seq=n        ack(服务器响应序列号)=m+1,希望你下次从m+1开始发

(3)客户端->服务器

 ACK=1        SYN=0        seq=m+1        ack(服务器响应序列号)=n+1

TCP的释放连接:

        四次挥手(可以交换申请释放要求):

FIN断开连接请求

(1)客户端->服务器       

        FIN=1        seq=a

(2)客户端<-服务器       

        ACK=1        seq=b       ack=a+1

服务器要求的。。。。。。。。继续传输数据        一个字节一个seq编号

(3)客户端<-服务器

        FIN=1        seq=c        

(4)客户端->服务器

        ACK=1        seq=a+1        ack=c+1

TCP的保证可靠性

UDP

系统调用

创建套接字

int socket(int domain, int type, int protocol);

domain 是地址族

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int socket(int domain, int type, int protocol);

参数

       domain:是地址族,大堆网络协议选项

                AF_INET        //internet协议,通常选用这个

        type:套接字类型

                SOCK_STREAM        //流式套接字,唯一对应TCP协议

                SOCK_DGRAM        //数据报套接字,唯一对应UDP协议

                SOCK_RAW        //原始套接字

        protocol:通常设置为0

       

返回值(RETURN)

        如果成功,则返回新套接字的文件描述符。发生错误时,返回-1,并适当地设置errno。

        

.   

名称(NAME)

        bind - 绑定IP地址和端口号 客户端可以不需要绑定,由操作系统进行分配,也可以自己固定IP

概要(SYNOPSIS) 

       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

参数

        sockfd:创建套接字的时候返回的文件描述符

        addr:给我申请的套接字,填充地址结构信息

                通用地址结构:

                                                

        addrlen:addr的长度

           

返回值(RETURN)

        成功返回0,失败返回-1

        

名称(NAME)

        socket - 设置监听套接字(把主动套接字:只能发送不能接收,变成被动套接字:只能接收不能发送)

可以同时进行三次握手的连接数量:2 * backlog + 1

概要(SYNOPSIS) 

       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int listen(int sockfd, int backlog)

参数

       sockfd:要监听的套接字的文件描述符

       backlog:限制等待连接的的最大队列长度,设置太小容易被攻击,堵塞队列等于半连接队列+全连接队列 可以同时进行三次握手2*backlog+1,越大也不是最好

       

返回值(RETURN)

        成功返回0,失败返回-1

        

名称(NAME)

        accept - 接受客户端的连接

概要(SYNOPSIS) 

       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

参数

       sockfd:监听套接字

       addr:对方的地址

       addrlen:对方的地址的长度

返回值(RETURN)

        

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       

参数

       

       

返回值(RETURN)

        

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       

参数

       

       

返回值(RETURN)

        

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       

参数

       

       

返回值(RETURN)

        

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       

参数

       

       

返回值(RETURN)

        

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       

参数

       

       

返回值(RETURN)

        

名称(NAME)

        socket - 创建套接字

概要(SYNOPSIS)

       

参数

       

       

返回值(RETURN)

        

    

        

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小囧豆豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值