소켓에 대한 간단한 이해
소켓에 대한 간단한 이해
소켓을 이해하려면 먼저 소켓에 대한 간단한 이해 프로토콜 계열을 숙지해야 합니다. 소켓에 대한 간단한 이해(전송 제어 프로토콜/인터넷 프로토콜)는 전송 제어 프로토콜/인터넷 프로토콜입니다. 호스트가 어떻게 인터넷에 연결하고 그 사이에 데이터가 어떻게 전송되는지에 대한 표준을 정의합니다.
소켓에 대한 간단한 이해는 말 그대로 TCP와 IP 프로토콜의 총칭이지만 실제로는 소켓에 대한 간단한 이해입니다. 프로토콜은 인터넷 IP 프로토콜 계열의 전체 소켓에 대한 간단한 이해 프로토콜을 나타냅니다. ISO 모델의 7개 계층과 달리 소켓에 대한 간단한 이해 프로토콜 참조 모델은 모든 소켓에 대한 간단한 이해 시리즈 프로토콜을 4개의 추상 계층
애플리케이션 계층: TFTP, HTTP, SNMP, FTP, SMTP, DNS, Telnet으로 분류합니다. 등
전송 계층: TCP, UDP
네트워크 계층: IP, ICMP, OSPF, EIGRP, IGMP
데이터 링크 계층: SLIP, CSLIP , PPP, MTU
각 추상화 계층은 하위 계층에서 제공하는 서비스를 기반으로 구축되어 상위 계층에 서비스를 제공합니다.
이 글을 읽고 관심을 갖고 있는 학생들은 이에 대해 어느 정도 이해하고 있을 것으로 추정됩니다. 또한, 저도 약간의 지식을 갖고 있기 때문에 자세한 설명은 생략하겠습니다. 관심 있는 학생들은 온라인에서 정보를 검색해 보세요.
소켓에 대한 간단한 이해 프로토콜에서는 두 개의 인터넷 호스트가 두 개의 라우터와 해당 레이어를 통해 연결됩니다. 각 호스트의 애플리케이션은 일부 데이터 채널
소켓
을 통해 서로 읽기 작업을 수행합니다. 로컬 프로세스 통신에서는 PID를 사용하여 프로세스를 고유하게 식별할 수 있지만 PID는 로컬에서만 고유합니다. 이때 네트워크의 두 프로세스 간에 PID 충돌이 발생할 가능성이 매우 높습니다. 이제 우리는 IP 계층의 IP 주소가 호스트를 고유하게 식별할 수 있고, TCP 계층 프로토콜과 포트 번호가 호스트의 프로세스를 고유하게 식별할 수 있다는 것을 알고 있습니다. 프로토콜 + 포트 번호는 네트워크에서 프로세스를 고유하게 식별합니다.
네트워크에서 프로세스를 고유하게 식별할 수 있게 되면 소켓을 사용하여 통신할 수 있습니다. 우리는 종종 소켓을 소켓으로 번역합니다. 소켓은 애플리케이션 계층과 전송 계층 사이의 추상화 계층입니다. 이는 소켓에 대한 간단한 이해 계층의 복잡한 작업을 애플리케이션 계층이 네트워크에서 구현된 프로세스를 호출할 수 있도록 몇 가지 간단한 인터페이스로 추상화합니다. 연락.
모든 것이 파일이라는 Unix 철학에 따라 소켓은 "열기-읽기/쓰기-닫기" 서버 및 클라이언트 모드를 구현합니다. 각 클라이언트는 "파일"을 유지 관리합니다. 연결이 설정되고 열린 후 상대방이 상대방의 콘텐츠를 읽거나 읽을 수 있도록 자체 파일에 콘텐츠를 쓸 수 있습니다. 통신이 끝나면 파일이 닫힙니다.
소켓 통신 프로세스
소켓은 "열기-읽기/쓰기-닫기" 모드를 구현한 것입니다. TCP 프로토콜 통신을 사용하는 소켓을 예로 들면 상호 작용 프로세스는 대략 다음과 같습니다. this
서버는 주소 유형(ipv4, ipv6), 소켓 유형 및 프로토콜을 기반으로 소켓을 생성합니다
서버는 IP 주소를 바인딩하고 포트 번호를 소켓으로
서버 소켓은 포트 번호 요청을 수신하고 언제든지 클라이언트로부터 연결을 받을 준비가 되어 있습니다. 이 때 서버의 소켓은 열리지 않습니다
클라이언트. 소켓을 생성합니다
클라이언트가 소켓을 열고 서버에 따라 IP 주소와 포트 번호가 서버 소켓에 연결을 시도합니다.
서버 소켓이 클라이언트 소켓 요청을 받아 수동적으로 엽니다. , 클라이언트가 연결 정보를 반환할 때까지 클라이언트 요청 수신을 시작합니다. 이때 소켓이 차단 상태에 들어간다는 것은 클라이언트가 연결 정보를 반환하고 다음 클라이언트 이해 요청을 받기 시작할 때까지 accept() 메서드가 반환되지 않는다는 것을 의미합니다.
클라이언트 성공적으로 연결되고 연결 상태 정보를 서버로 보냅니다.
서버 승인 메서드가 반환되고 연결이 성공합니다.
클라이언트가 소켓에 정보를 씁니다
서버가 읽습니다. 정보
클라이언트가 닫힙니다
서버 측 종료
3방향 핸드셰이크
소켓에 대한 간단한 이해 프로토콜에서 TCP 프로토콜은 3방향 핸드셰이크를 통해 안정적인 연결을 설정합니다.
첫 번째 핸드셰이크: 클라이언트 서버에 연결을 시도하고 서버에 syn 패킷을 보내려고 합니다(시퀀스 번호 동기화), syn=j, 클라이언트는 SYN_SEND 상태에 진입하고 서버가 확인하기를 기다립니다.
두 번째 핸드셰이크: 서버 클라이언트의 syn 패킷을 수신하고 확인(ack=j+1)함과 동시에 SYN 패킷(syn=k), 즉 SYN+ACK 패킷을 클라이언트에 전송합니다. 이때 서버는 SYN_RECV 상태
세 번째 핸드셰이크: 세 번째 핸드셰이크: 클라이언트 클라이언트는 서버로부터 SYN+ACK 패킷을 수신하고 확인 패킷 ACK(ack=k+1)를 서버로 보냅니다. 패킷이 전송된 후 클라이언트와 클라이언트는 서버가 ESTABLISHED 상태에 진입하고 3방향 핸드셰이크를 완료합니다 자세히 살펴보면 서버 소켓과 클라이언트 소켓 사이의 연결을 설정하는 부분이 실제로 유명한 3방향 핸드셰이크입니다
addrlen: 소켓 주소의 길이
ssize_t read(int fd, void *buf, size_t count);
소켓 내용 읽기fd: 소켓 설명자buf: 버퍼
count: 버퍼 길이
ssize_t write(int fd, const void *buf, size_t count) ;
소켓에 콘텐츠를 쓰는 것은 실제로 콘텐츠를 보내는 것입니다fd: 소켓 설명자buf: 버퍼
count: 버퍼 영역 길이
int close(int fd);
소켓이 닫힌 것으로 표시되어 해당 소켓 설명자의 참조 횟수가 -1이 되면 TCP 클라이언트가 트리거됩니다. 서버에 종료 요청을 보냅니다. 참고Linux 소켓 프로그래밍(Linux에만 국한되지 않음)
소켓 프로그래밍 알아보기

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사에서는 주로 IO 멀티플렉싱을 소개하는 php+socket과 php+socket이 웹 서버를 구현하는 방법에 대한 관련 지식을 제공합니다. 관심 있는 친구들은 아래를 살펴보시면 모두에게 도움이 되길 바랍니다.

1. TCP 프로토콜 기반 소켓 프로그래밍 1. 소켓 워크플로는 서버 측에서 시작됩니다. 서버는 먼저 소켓을 초기화한 다음 포트에 바인드하고 포트를 수신하며 차단을 위해 승인을 호출하고 클라이언트가 연결될 때까지 기다립니다. 이때 클라이언트가 Socket을 초기화한 후 서버에 연결(connect)하면, 연결에 성공하면 클라이언트와 서버 간의 연결이 성립된다. 클라이언트는 데이터 요청을 보내고, 서버는 요청을 받아 요청을 처리한 후 클라이언트에 응답 데이터를 보내고, 클라이언트는 데이터를 읽고 마지막으로 연결을 종료합니다. 이를 구현하려면 다음 Python 코드를 사용하세요. : importso

SpringBoot 측의 첫 번째 단계는 종속성을 도입하는 것입니다. 먼저 WebSocket에 필요한 종속성과 com.alibabafastjson1.2.73org.springframework.bootspring-boot-starter-websocket 출력 형식을 처리하기 위한 종속성을 도입해야 합니다. 두 번째 단계는 WebSocket 구성 클래스 importorg를 생성하는 것입니다. springframework.context.annotation.Bean;importorg.springframework.context.annotation.Config

PHP 소켓을 연결할 수 없는 문제에 대한 해결책: 1. PHP에서 소켓 확장이 활성화되어 있는지 확인하십시오. 2. php.ini 파일을 열고 "php_sockets.dll"이 로드되었는지 확인하십시오. 3. "php_sockets.dll"의 주석을 제거하십시오. ".

인터넷이 발전하면서 파일 전송은 사람들의 일상 업무와 오락에 없어서는 안 될 부분이 되었습니다. 그러나 이메일 첨부나 파일 공유 웹사이트와 같은 기존 파일 전송 방법에는 특정 제한이 있으며 실시간 및 보안 요구 사항을 충족할 수 없습니다. 따라서 실시간 파일 전송을 달성하기 위해 PHP 및 소켓 기술을 사용하는 것이 새로운 솔루션이 되었습니다. 이 기사에서는 실시간 파일 전송을 달성하기 위해 PHP 및 소켓 기술을 사용하는 기술 원리, 장점 및 응용 시나리오를 소개하고 구체적인 사례를 통해 이 기술의 구현 방법을 보여줍니다. 기술

C#의 일반적인 네트워크 통신 및 보안 문제와 해결 방법 오늘날 인터넷 시대에 네트워크 통신은 소프트웨어 개발에 없어서는 안 될 부분이 되었습니다. C#에서는 일반적으로 데이터 전송 보안, 네트워크 연결 안정성 등과 같은 일부 네트워크 통신 문제가 발생합니다. 이 문서에서는 C#의 일반적인 네트워크 통신 및 보안 문제에 대해 자세히 설명하고 해당 솔루션과 코드 예제를 제공합니다. 1. 네트워크 통신 문제 네트워크 연결 중단: 네트워크 통신 과정에서 네트워크 연결이 중단될 수 있으며, 이로 인해

이 기사에서는 php+socket에 대한 관련 지식을 제공합니다. 주로 소켓이 무엇인지 소개합니다. php+socket은 클라이언트-서버 데이터 전송을 어떻게 실현합니까? 관심 있는 친구들은 아래를 살펴보시면 모두에게 도움이 되길 바랍니다.

PHP는 다양한 웹 애플리케이션을 개발하는 데 사용할 수 있는 일반적으로 사용되는 개발 언어입니다. 일반적인 HTTP 요청 및 응답 외에도 PHP는 소켓을 통한 네트워크 통신을 지원하여 보다 유연하고 효율적인 데이터 상호 작용을 달성합니다. 이 기사에서는 PHP에서 소켓 통신을 구현하는 방법과 기술을 소개하고 특정 코드 예제를 첨부합니다. 소켓 통신이란 무엇입니까? 소켓은 서로 다른 컴퓨터 간에 데이터를 전송할 수 있는 네트워크 통신 방법입니다. 작성자: S
