TCP/IP 프로토콜은 클라이언트를 어떻게 구별합니까?

TCP/IP 프로토콜은 클라이언트를 어떻게 구별합니까?

청취 소켓을 생성하면 설명자(루트 설명자라고 가정)를 반환하고 해당 설명자를 주소에 바인딩합니다. 새로운 클라이언트 연결이 가능해질 때마다 루트 설명자는 우리에게 알리고 우리는 새로운 연결을 수락하고 각 클라이언트에 대한 고유한 설명자(클라이언트 설명자라고 가정)를 받습니다. 이제부터 이 설명자를 사용하여 이 클라이언트와 통신할 수 있습니다. 클라이언트 정보는 클라이언트 설명자가 가리키는 별도의 inode에 저장됩니다. 따라서 Linux는 해당 클라이언트 데이터를 해당 설명자에 전달할 수 있습니다.

위에서 언급한 내용이 맞다면(잘못 이해했다면 정정해 주세요) 질문이 있습니다. inode에 저장된 클라이언트 정보는 무엇입니까? Linux는 클라이언트를 어떻게 고유하게 식별합니까?

답변1

TCP/IP 및 UDP/IP 프로토콜은 로컬 및 원격 IP 주소와 포트에 의해 정의된 "세션"을 인식합니다[1]. 예를 들어, TCP/IP 패킷에는 소스 및 대상 IP 주소와 포트가 포함됩니다[2]. 여러 연결을 여는 서버나 클라이언트(예: Firefox)는 OSI [3] 세션 계층에서 주소와 포트로 구분됩니다.

웹 브라우저를 사용할 때 쉘을 열고 루트로 실행하십시오.

netstat -tulpan

현재 및 활성 연결을 봅니다[4].

출력 예:

# netstat -tulpan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1966/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1902/cupsd          
tcp        0      0 192.168.1.16:57374      172.217.23.165:443      ESTABLISHED 4730/firefox-bin     
tcp        0      0 192.168.1.16:55478      104.26.11.30:443        ESTABLISHED 4730/firefox-bin     
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1996/named          

이 줄은 Firefox가 어떤 패킷이 어떤 요청에 대한 응답인지 식별할 수 있도록 다양한 로컬 포트에 대한 Firefox의 "설정된" 연결을 보여줍니다.

LISTEN 상태의 다른 라인은 sshd(Secure Shell Server), cupsd(Printer Daemon) 및 named(Bind Name Server)를 포함하여 서버 프로세스로 실행되는 로컬 프로그램입니다. 그러면 들어오는 연결이 허용됩니다.

더 많은 참고자료를 알아보세요:

[1]https://en.wikipedia.org/wiki/Port_(컴퓨터_네트워킹)

[2]https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_struct또한https://en.wikipedia.org/wiki/IPv4_header#Header

[삼]https://en.wikipedia.org/wiki/OSI_model

[4]https://en.wikipedia.org/wiki/Netstat

답변2

작업을 수행할 때 listen포트는 잘 알려져 있어야 하므로 포트를 지정합니다. 이 끝에는 IP(또는 다중)와 포트가 있습니다.

a를 실행할 때 connect원격 서버의 IP와 포트를 지정합니다 listen. 로컬 IP는 운영 체제에 의해 결정되고 포트(임의의 숫자일 수 있음)가 할당됩니다.

연결은 다음을 통해 식별할 수 있습니다. ( (remote IP, remote port), (local IP, local port) )이는 하나의 IP 주소에서 각 원격 포트까지 64K 연결에 대한 제한을 설정합니다.

관련 정보