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에 의한 "ESTABLISHED" 연결을 표시합니다.

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

자세히 알아보기 위한 참고 자료:

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

[2]https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure게다가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(또는 둘 이상)와 포트가 있습니다.

이를 수행할 때 connect원격지의 IP와 포트를 지정합니다 listen. 로컬 IP는 OS에 의해 결정되며 포트는 할당됩니다(임의의 숫자일 수 있음).

연결은 ( (remote IP, remote port), (local IP, local port) )하나의 IP 주소에서 각 원격 포트에 대한 최대 64K 연결로 식별할 수 있습니다.

관련 정보