码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程(二)——TCP协议、socket

时间:2018-08-29 19:09:31      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:可靠传输   分享图片   就是   end   isp   链接   cep   imp   sed   

TCP协议与socket套接字

一、TCP协议

1、可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

2.(1)三次握手建链接
(2)四次挥手断开链接
(3)tcp协议的状态
(4)syn洪水攻击与半连接池

3、(1)三次握手建立链接、四次挥手断开链接(各种状态)

技术分享图片

(2)syn洪水攻击与半连接池

syn洪水攻击:就是让服务器资源耗尽,无法提供正常的服务,间接地拒绝

半连接池:暂时存放请求,用于限制请求个数,但是不限制连接个数

二、socket套接字

1、socket层

技术分享图片

2、什么是socket

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket是封装好TCP/IP协议的接口。

3、socket工作流程

技术分享图片

 

先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束

技术分享图片TCP服务端
技术分享图片
from socket import socket, AF_INET, SOCK_STREAM

IP = 127.0.0.1
PORT = 8888
ADDRESS = (IP, PORT)
BUFSIZE = 1024
# 1.创建客户端socket对象
cli_socket = socket(AF_INET, SOCK_STREAM)
# 2.连接服务器
cli_socket.connect(ADDRESS)
# 3.发收数据
cli_socket.send(hello.encode(utf-8))  # 只能以字节类型发送
data = cli_socket.recv(BUFSIZE)
print(data.decode(utf-8))
# 关闭客户端连接
cli_socket.close()
TCP客户端

 

网络编程(二)——TCP协议、socket

标签:可靠传输   分享图片   就是   end   isp   链接   cep   imp   sed   

原文地址:https://www.cnblogs.com/linagcheng/p/9556260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!