Linux sock 파일은 쉘 프로그래밍을 통해 형성된 소켓 파일을 말하며, 소켓은 애플리케이션 계층과 TCP/IP 프로토콜 제품군 간의 통신을 위한 중간 소프트웨어 추상화 계층입니다. 실제로 소켓은 소켓 인터페이스 뒤에 복잡한 TCP/IP 프로토콜 제품군을 숨기는 외관 모드입니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
Linux 양말 파일은 무엇을 의미하나요?
Linux의 Sock은 일반적으로 쉘 프로그래밍을 통해 형성된 소켓 파일을 의미합니다. ls -l을 전달한 후 표시되는 첫 번째 파일 형식은 s입니다.
소켓이란 무엇인가요?
1. 소켓:
Socket은 Unix에서 유래되었으며 Unix/Linux의 기본 철학 중 하나는 "모든 것이 파일이다"이며 "열기 -> 읽기 및 쓰기 쓰기/읽기"로 열 수 있습니다. > 닫힘 닫힘' 모드가 작동됩니다. 소켓은 이 모드의 구현입니다. 소켓은 특수 파일이며 일부 소켓 기능은 이에 대한 작업(읽기/쓰기 IO, 열기, 닫기)입니다. 솔직하게 말하면 소켓은 응용 프로그램 계층이고 TCP/IP 프로토콜입니다. 인터페이스 집합인 가족 통신을 위한 소프트웨어 추상화 계층입니다. 디자인 모드에서 소켓은 실제로 소켓 인터페이스 뒤에 복잡한 TCP/IP 프로토콜 제품군을 숨기는 파사드 모드입니다. 사용자에게는 소켓이 지정된 요구 사항을 충족하도록 데이터를 구성할 수 있는 간단한 인터페이스 집합이 있습니다.
참고: 실제로 소켓에는 레이어 개념이 없습니다. 이는 프로그래밍을 더 쉽게 만드는 파사드 디자인 패턴의 응용일 뿐입니다. 소프트웨어 추상화 계층입니다. 네트워크 프로그래밍에서는 많은 소켓을 사용합니다.
2. 소켓 설명자
는 실제로 정수입니다. 우리에게 가장 친숙한 세 개의 핸들은 0, 1, 2입니다. 0은 표준 입력, 1은 표준 출력, 2는 표준 오류 출력입니다. 0, 1, 2는 정수로 표현되고, 해당 FILE * 구조는 stdin, stdout, stderr로 표현됩니다
소켓 API는 원래 유닉스 운영체제의 일부로 개발되었기 때문에 다른 소켓 API와 다릅니다. I/O 장치는 시스템의 일부로 통합됩니다. 특히, 애플리케이션이 인터넷 통신을 위한 소켓을 생성할 때 운영 체제는 소켓을 식별하기 위한 설명자로 작은 정수를 반환합니다. 그런 다음 애플리케이션은 설명자를 매개변수로 전달하고 함수를 호출하여 일부 작업(예: 네트워크를 통해 데이터 전송 또는 수신 데이터 수신)을 완료합니다.
많은 운영 체제에서는 소켓 설명자와 기타 I/O 설명자가 통합되어 있으므로 응용 프로그램이 파일에 대해 소켓 I/O 또는 I/O 읽기/쓰기 작업을 수행할 수 있습니다.
응용 프로그램이 소켓을 생성하려고 하면 운영 체제는 설명자로 작은 정수를 반환하고 응용 프로그램은 이 설명자를 사용하여 소켓을 참조합니다. I/O 요청이 필요한 응용 프로그램은 운영 체제에 소켓을 열도록 요청합니다. 문서. 운영 체제는 응용 프로그램이 파일에 액세스할 수 있도록 파일 설명자를 만듭니다. 애플리케이션의 관점에서 파일 설명자는 애플리케이션이 파일을 읽고 쓰는 데 사용할 수 있는 정수입니다. 아래 그림은 운영 체제가 내부 데이터 구조를 가리키는 포인터 배열로 파일 설명자를 구현하는 방법을 보여줍니다.
프로그램 시스템별로 별도의 표가 있습니다. 정확하게 말하면 시스템은 실행 중인 각 프로세스에 대해 별도의 파일 설명자 테이블을 유지 관리합니다. 프로세스가 파일을 열면 시스템은 파일의 내부 데이터 구조에 대한 포인터를 파일 설명자 테이블에 쓰고 테이블의 인덱스 값을 호출자에게 반환합니다. 애플리케이션은 이 설명자를 기억하고 나중에 파일을 조작할 때 이를 사용하기만 하면 됩니다. 운영 체제는 이 설명자를 인덱스로 사용하여 프로세스 설명자 테이블에 액세스하고 포인터를 사용하여 파일에 대한 모든 정보를 보유하는 데이터 구조를 찾습니다.
소켓의 시스템 데이터 구조:
1) 소켓 API에는 소켓을 생성하는 데 사용되는 함수 소켓이 있습니다. 소켓 설계의 일반적인 아이디어는 소켓이 매우 일반적이기 때문에 단일 시스템 호출로 모든 소켓을 생성할 수 있다는 것입니다. 소켓이 생성되면 애플리케이션은 특정 세부 정보를 지정하기 위해 다른 함수를 호출해야 합니다. 예를 들어, 소켓을 호출하면 새로운 설명자 항목이 생성됩니다:
2) 소켓의 내부 데이터 구조에는 많은 필드가 포함되어 있지만 시스템이 소켓을 생성한 후에는 대부분의 필드가 채워지지 않습니다. 애플리케이션이 소켓을 생성한 후 소켓을 사용하려면 먼저 다른 프로시저를 호출하여 이러한 필드를 채워야 합니다.
추천 학습: "
linux 비디오 튜토리얼위 내용은 리눅스 양말 파일은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!