>  기사  >  백엔드 개발  >  PHP 인터뷰 질문 2: 사용된 전송 프로토콜

PHP 인터뷰 질문 2: 사용된 전송 프로토콜

不言
不言원래의
2018-04-18 09:31:524235검색

이 기사에서는 PHP 면접 질문 2에 사용된 전송 프로토콜을 소개합니다. 참고할만한 가치가 있습니다. 이제 도움이 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

1.HTTP(Hyper Text Transport Protocol) :Hypertext Transfer Protocol. 인터넷에서 가장 널리 사용되는 통신 프로토콜 중 하나입니다. 인터넷 사용자가 사용하는 WWW 프로그램은 이 프로토콜 표준을 준수해야 합니다. 사용자가 서버에서 지정된 파일 검색, 다운로드, 실행 등을 포함하여 특정 리소스 서버의 파일에 액세스하려는 경우 HTTP를 통해 인터넷상의 WWW 리소스에 액세스할 수 있습니다.
 2. FILE: 로컬 파일 전송 프로토콜. 사용자 자신의 컴퓨터에서 파일을 얻어오는 방식으로, 사용자가 자신의 하드 드라이브에 저장된 파일을 내비게이션 화면에 표시해 주는 방식이다.
 3. FTP(파일 전송 프로토콜): 파일 전송 프로토콜입니다. 이 프로토콜은 인터넷에서 파일을 가져오는 방법 중 하나이며 사용자와 파일 서버 간에 파일을 전송하는 데 사용됩니다. 이 프로토콜을 통해 사용자는 원격 서버에 있는 파일 내용을 쉽게 볼 수 있으며 동시에 필요한 내용을 자신의 컴퓨터에 복사할 수 있습니다. 반면, 파일 서버 권한을 통해 사용자가 서버에 있는 파일을 관리용으로 사용할 수 있는 경우, 사용자는 자신의 로컬 컴퓨터에 있는 콘텐츠를 파일 서버에 업로드하여 다른 사용자가 공유할 수 있으며, 위 파일을 자유롭게 수정할 수 있습니다. 삭제, 이동, 복사, 이름 바꾸기 등과 같은 파일

전송 계층은 대상 네트워크에 도달하는 두 가지 방법을 제공합니다.

전송 제어 프로토콜(TCP): 정상적인 데이터 전송을 보장하기 위해 완전한 오류 제어 및 흐름 제어를 제공하는 연결 지향 프로토콜입니다.
UDP(사용자 데이터그램 프로토콜): 기본적인 오류 감지 기능만 제공하며 비연결형 프로토콜입니다.
특징:
1) UDP:
패키지 데이터
데이터 크기가 제한됨(64k)
연결을 설정하지 않음
빠른 속도이지만 안정성이 낮음
2) TCP:
연결 채널 설정
무제한 데이터 크기
느린 속도, 그러나 신뢰성이 높습니다
전송 계층에는 포트, 소켓 등 많은 것이 포함되므로 모바일 개발을 위해서는 이에 대한 이해가 필요하므로 다음 기사에서 자세히 소개할 것이므로 여기서는 설명하지 않겠습니다.

TCP/IP 프로토콜의 최고 수준인 애플리케이션 계층은 모바일 개발에 가장 많이 노출됩니다.

TCP 프로토콜에서 실행되는 프로토콜:
HTTP(Hypertext Transfer Protocol, Hypertext Transfer Protocol), 주로 일반 탐색에 사용됩니다.
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer 또는 HTTP over SSL, Secure Hypertext Transfer Protocol)는 HTTP 프로토콜의 보안 버전입니다.
FTP(파일 전송 프로토콜)는 이름에서 알 수 있듯이 파일 전송에 사용됩니다.
POP3(Post Office Protocol, 버전 3, 우체국 프로토콜), 이메일 수신에 사용됩니다.
SMTP(Simple Mail Transfer Protocol)는 이메일을 보내는 데 사용됩니다.
TELNET(네트워크를 통한 텔레타이프), 터미널을 통해 네트워크에 로그인합니다.
SSH(보안이 취약한 TELNET을 대체하는 데 사용되는 보안 셸), 암호화되고 안전한 로그인에 사용됩니다.
UDP 프로토콜에서 실행되는 프로토콜:
BOOTP(부팅 프로토콜), 디스크가 없는 장치에 적용됩니다.
NTP(Network Time Protocol), 네트워크 동기화에 사용됩니다.
DHCP(동적 호스트 구성 프로토콜)는 IP 주소를 동적으로 구성합니다.
기타:
DNS(도메인 이름 서비스), 주소 조회, 메일 전달 등을 완료하는 데 사용됩니다(TCP 및 UDP 프로토콜에서 실행).
ECHO(에코 프로토콜), 오류 확인 및 응답 시간 측정에 사용됩니다(TCP 및 UDP 프로토콜에서 실행).
SNMP(Simple Network Management Protocol), 네트워크 정보 수집 및 네트워크 관리에 사용됩니다.
ARP(주소 확인 프로토콜)는 이더넷 하드웨어의 주소를 동적으로 확인하는 데 사용됩니다.

sip 프로토콜 https://www.cnblogs.com/gardenofhu/p/7299963.html

SIP(Session Initiation Protocol)는 VoIP 기술에서 가장 일반적으로 사용되는 프로토콜 중 하나입니다. 인터넷을 통한 멀티미디어 통신 세션을 제어하기 위해 다른 애플리케이션 계층 프로토콜과 함께 작동하는 애플리케이션 계층 프로토콜입니다.

SIP - 개요
다음은 SIP에 대해 참고할 몇 가지 사항입니다.

SIP는 인터넷 프로토콜을 통해 멀티미디어 세션을 생성, 수정 및 종료하는 데 사용되는 신호 프로토콜입니다. 세션은 두 끝점 간의 간단한 호출에 지나지 않습니다. 엔드포인트는 스마트폰, 노트북 또는 인터넷을 통해 멀티미디어 콘텐츠를 주고받을 수 있는 모든 장치가 될 수 있습니다.

SIP는 IETF(Internet Engineering Task Force) 표준에서 정의한 애플리케이션 계층 프로토콜입니다. RFC 3261에 정의되어 있습니다.

SIP는 클라이언트-서버 아키텍처를 구현하고 HTTP의 URL 및 URI와 SMTP의 텍스트 인코딩 체계 및 헤더 스타일을 사용합니다.

SIP는 세션을 설명하는 SDP(세션 설명 프로토콜)와 IP 네트워크를 통해 음성 및 비디오를 전달하기 위한 RTP(실시간 전송 프로토콜)의 도움을 사용합니다.

SIP는 2자간(유니캐스트) 또는 다자간(멀티캐스트) 세션에 사용할 수 있습니다.

기타 SIP 애플리케이션에는 파일 전송, 인스턴트 메시징, 화상 회의, 온라인 게임 및 스트리밍 멀티미디어 배포가 포함됩니다.

아래 다이어그램은 일반적인 시나리오에서 SIP의 적용 가능성을 보여줍니다.

일반적으로 SIP 프로토콜은 두 개 이상의 엔드포인트 간의 인터넷 전화 통신 및 멀티미디어 배포에 사용됩니다. 예를 들어 한 사람이 SIP를 사용하여 다른 사람에게 전화 통화를 시작하거나 누군가가 여러 참가자와 전화 회의를 설정할 수 있습니다.

SIP 프로토콜은 구성할 명령이 제한되어 매우 간단하게 설계되었습니다. 또한 텍스트 기반이므로 누구나 SIP 세션의 엔드포인트 간에 전달되는 SIP 메시지를 읽을 수 있습니다.

SIP가 네트워크를 생성하는 데 도움을 주는 엔터티가 있습니다. SIP에서 각 네트워크 요소는 주소와 유사한 SIP URI(Uniform Resource Identifier)로 식별됩니다. 다음은 네트워크 요소입니다.

User Agent
Proxy Server
Registration Server
Redirect Server
Location Server
User Agent
SIP 네트워크의 종점이자 가장 중요한 네트워크 요소 중 하나입니다. 엔드포인트는 세션을 시작, 수정 또는 종료할 수 있습니다. 사용자 에이전트는 SIP 네트워크에서 가장 지능적인 장치 또는 네트워크 요소입니다. 소프트폰, 휴대폰 또는 노트북이 될 수 있습니다.

사용자 에이전트는 논리적으로 두 부분, 즉

요청을 보내고 응답을 받는 개체인 UAC(사용자 에이전트 클라이언트)로 나뉩니다.

사용자 에이전트 서버(UAS) - 요청을 받고 응답을 보내는 엔터티입니다.

SIP는 발신자의 전화가 통화를 시작하는 클라이언트 역할을 하고 수신자의 전화가 통화에 응답하는 서버 역할을 하는 클라이언트-서버 아키텍처를 기반으로 합니다.

프록시 서버
사용자 에이전트로부터 요청을 받아 다른 사용자에게 전달하는 네트워크 요소입니다.

기본적으로 프록시 서버는 라우터처럼 작동합니다.

SIP 요청을 이해하고 URI의 도움으로 보내는 지능이 있습니다.

프록시 서버는 두 사용자 에이전트 사이에 위치합니다.

원본과 대상 사이에 최대 70개의 프록시 서버가 있을 수 있습니다.

프록시 서버에는 두 가지 유형이 있습니다.

상태 비저장 프록시 서버 - 수신된 메시지만 전달합니다. 이 유형의 서버는 통화 또는 거래 정보를 저장하지 않습니다.

상태 저장 프록시 서버 - 이 유형의 프록시 서버는 수신된 모든 요청과 응답을 추적하고 필요할 경우 나중에 사용할 수 있습니다. 상대방이 응답하지 않으면 요청을 다시 보낼 수 있습니다.

등록 서버
등록 서버는 사용자 에이전트의 등록 요청을 수락합니다. 이는 사용자가 네트워크에서 자신을 인증하는 데 도움이 됩니다. 동일한 도메인 내의 다른 SIP 서버를 돕기 위해 데이터베이스에 URI와 사용자 위치를 저장합니다.

SIP 등록 과정을 보여주는 아래 예를 살펴보세요.

여기서 발신자는 TMC 도메인에 등록하려고 합니다. 따라서 TMC의 등록 서버에 REGISTER 요청을 보내고 서버는 클라이언트에 권한을 부여할 때 200 OK 응답을 반환합니다.

리디렉션 서버
리디렉션 서버는 요청을 수신하고 등록 기관이 생성한 위치 데이터베이스에서 요청의 의도된 수신자를 찾습니다.

리디렉션 서버는 데이터베이스를 사용하여 위치 정보를 얻고 사용자에게 3xx(리디렉션 응답)로 응답합니다. 이 튜토리얼의 뒷부분에서 응답 코드에 대해 논의하겠습니다.

위치 서버
위치 서버는 발신자의 가능한 위치에 대한 정보를 리디렉션 및 프록시 서버에 제공합니다.

프록시 서버나 리디렉션 서버만 위치 서버에 접속할 수 있습니다.

아래 다이어그램은 세션 설정 시 각 네트워크 요소가 수행하는 역할을 보여줍니다.

SIP - 시스템 아키텍처
SIP는 계층화된 프로토콜로 구성됩니다. 즉, 해당 동작은 각 단계 간 느슨한 결합만 포함하여 상당히 독립적인 처리 단계 세트의 측면에서 설명됩니다.

SIP의 가장 낮은 계층은 구문과 인코딩입니다. 해당 인코딩은 향상된 Backus-Naur 테이블 형식 구문(BNF)을 사용하여 지정됩니다.

두 번째 레이어는 전송 레이어입니다. 클라이언트가 요청을 보내고 응답을 받는 방법과 서버가 요청을 받고 네트워크를 통해 응답을 보내는 방법을 정의합니다. 모든 SIP 요소에는 전송 계층이 포함되어 있습니다.

다음 단계는 거래 레이어입니다. 트랜잭션은 클라이언트 트랜잭션(전송 계층 사용)이 서버 트랜잭션으로 보낸 요청이며 해당 요청에 대한 모든 응답은 서버 트랜잭션에서 클라이언트로 다시 전송됩니다. UAC(사용자 에이전트 클라이언트)가 완료하는 모든 작업은 일련의 트랜잭션을 사용하여 수행됩니다. 상태 비저장 프록시에는 트랜잭션 계층이 포함되어 있지 않습니다.

트랜잭션 레이어 위의 레이어를 트랜잭션 사용자라고 합니다. 상태 비저장 프록시를 제외하고 모든 SIP 엔터티는 트랜잭션 사용자입니다.

아래 이미지는 SIP 세션의 기본 통화 흐름을 보여줍니다.

위 호출 흐름에 대한 단계별 설명은 다음과 같습니다. -

프록시 서버로 전송된 INVITE 요청이 세션 시작을 담당합니다.

프록시 서버는 INVITE 요청의 재전송을 중지하기 위해 발신자(Alice)에게 즉시 응답하려고 100을 보냅니다.

프록시 서버는 위치 서버에서 Bob의 주소를 검색합니다. 주소를 얻은 후 INVITE 요청을 추가로 전달합니다.

이후 Bob의 휴대폰에서 생성된 180번의 벨소리(임시 응답)가 Alice에게 반환됩니다.

밥이 전화를 받은 후 빠르게 200 OK 응답이 생성되었습니다.

200 OK가 Alice에 도달하면 Bob은 Alice로부터 ACK를 받습니다.

동시에 세션이 설정되고 양쪽 끝에서 RTP 패킷(세션)이 흐르기 시작합니다.

세션이 종료된 후 모든 참가자(Alice 또는 Bob)는 BYE 요청을 보내 세션을 종료할 수 있습니다.

프록시 서버를 우회하여 Alice에서 Bob으로 직접 BYE.

마지막으로 Bob은 BYE를 확인하기 위해 200 OK 응답을 보내고 세션이 종료됩니다.

위의 기본 호출 흐름에서는 3개의 트랜잭션(1, 2, 3으로 표시)을 사용할 수 있습니다.

전체 호출(INVITE에서 200 OK까지)을 Dialog라고 합니다.

SIP Ladder
프록시는 한 사용자가 다른 사용자와 연결하는 데 어떻게 도움이 되나요? 아래 이미지를 통해 알아보겠습니다.

그림에 표시된 토폴로지를 SIP 래더 다이어그램이라고 합니다. 프로세스는 다음과 같이 진행됩니다. -

발신자가 통화를 시작하면 INVITE 메시지가 프록시 서버로 전송됩니다. INVITE를 수신한 후 프록시 서버는 DNS 서버의 도움을 받아 수신자의 주소를 확인하려고 시도합니다.

다음 경로를 얻은 후 발신자의 프록시 서버(프록시 1, 아웃바운드 프록시 서버라고도 함)는 INVITE 요청을 수신자의 프록시 서버인 수신자의 인바운드 프록시 서버(프록시 서버 2)로 전달합니다.

인바운드 프록시 서버는 위치 서버에 접속하여 사용자가 등록한 착신자 주소 정보를 얻습니다.

위치 서버에서 정보를 받은 후 통화를 목적지로 전달하세요.

사용자 에이전트가 자신의 주소를 알고 나면 호출을 우회할 수 있습니다. 즉, 직접 호출할 수 있습니다.

SIP 메시지에는 요청과 응답의 두 가지 유형이 있습니다.

요청의 시작 줄에는 요청을 정의하는 메서드와 보낼 요청을 정의하는 요청 URI가 포함되어 있습니다.

마찬가지로 응답의 시작 줄에는 응답 코드가 포함됩니다.

요청 방법
SIP 요청은 통신을 설정하는 데 사용되는 코드입니다. 이를 보완하기 위해 SIP 응답은 일반적으로 요청의 성공 여부를 나타냅니다.

METHODS라는 SIP 요청은 SIP 메시지를 활성화합니다.

메서드는 다른 사용자 에이전트 또는 서버에서 수행할 특정 작업을 요청하므로 SIP 요청으로 간주될 수 있습니다.

메서드는 두 가지 유형으로 나뉩니다 -

핵심 메서드

확장 메서드

핵심 메서드
다음과 같이 6가지 핵심 메서드가 있습니다.

INVITE
INVITE는 사용자 에이전트와의 세션을 시작하는 데 사용됩니다. 즉, INVITE 메소드는 사용자 에이전트 간의 미디어 세션을 설정하는 데 사용됩니다.

INVITE는 이메일 본문에 발신자의 미디어 정보를 포함할 수 있습니다.

INVITE가 성공적인 응답(2xx)을 받거나 ACK가 전송되면 세션이 설정된 것으로 간주됩니다.

성공적인 INVITE 요청은 두 사용자 에이전트 간의 대화를 설정하며 BYE가 전송될 때까지 종료될 수 없습니다.

설정된 대화 상자 내에서 전송된 INVITE를 re-INVITE라고 합니다.

Re-INVITE는 세션 속성을 변경하거나 대화 상자 상태를 새로 고치는 데 사용됩니다.

초대 예제
다음 코드는 INVITE가 어떻게 사용되는지 보여줍니다.

코드 복사

INVITE sips:Bob@TMC.com SIP/2.0  
  Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9  
  Max-Forwards: 70  
  From: Alicesips:Alice@TTP.com;tag = 1234567  
  To: Bobsips:Bob@TMC.com 
  Call-ID: 12345601@192.168.2.1 
  CSeq: 1 INVITE  
  Contact: sips:Alice@client.ANC.com  
  Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY  
  Supported: replaces  
  Content-Type: application/sdp  
  Content-Length: …
v = 0  
  o = Alice 2890844526 2890844526 IN IP4 client.ANC.com  
  s = Session SDP  
  c = IN IP4 client.ANC.com  
  t = 3034423619 0  
  m = audio 49170 RTP/AVP 0  
  a = rtpmap:0 PCMU/8000

코드 복사

BYE 
BYE是用于终止既定会话的方法。这是SIP请求,可以由呼叫者或被叫方发送以终止会话。
它不能由代理服务器发送。
BYE请求通常路由端到端,绕过代理服务器。
BYE不能发送到待处理的INVITE或未建立的会话。
注册 
REGISTER请求执行用户代理的注册。该请求由用户代理发送到注册服务器。
REGISTER请求可以转发或代理,直到它到达指定域的权威注册商。
它在正在注册的用户的To头中携带AOR(记录地址)。
REGISTER请求包含时间段(3600sec)。
一个用户代理可以代表另一个用户代理发送REGISTER请求。这被称为第三方注册。这里,From标签包含代表To标题中标识的方提交注册的方的URI 。
取消 
CANCEL用于终止未建立的会话。用户代理使用此请求取消之前发起的未决呼叫尝试。
它可以由用户代理或代理服务器发送。
CANCEL是逐跳请求,即它通过用户代理之间的元素,并接收下一个有状态元素生成的响应。
ACK 
ACK用于确认对INVITE方法的最终响应。如果INVITE不可用,则ACK始终沿着INVITE.ACK的方向包含SDP主体(媒体特性)。
ACK可能不会用于修改已经在初始INVITE中发送的媒体描述。
接收ACK的有状态代理必须确定ACK应该向下游转发到另一个代理或用户代理。
对于2xx响应,ACK是端到端的,但对于所有其他最终响应,它在涉及有状态代理时基于逐跳的工作。
OPTIONS 
OPTIONS方法用于向用户代理或代理服务器询问其功能并发现其当前的可用性。对请求的响应列出了用户代理或服务器的功能。代理从不生成OPTIONS请求。

확장 방법
구독
사용자 에이전트는 SUBSCRIBE를 사용하여 구독을 설정하여 특정 이벤트에 대한 알림을 받습니다.

구독 기간을 나타내는 Expires 헤더 필드가 포함되어 있습니다.

기간이 지나면 구독이 자동으로 종료됩니다.

구독은 사용자 에이전트 간의 대화를 설정합니다.

대화 상자 내에서 또 다른 구독을 보내면 만료 시간 전에 다시 구독할 수 있습니다.

구독하는 사용자에게는 200OK가 지급됩니다.

사용자는 만료 값이 0(영)인 다른 SUBSCRIBE 메소드를 보내 구독을 취소할 수 있습니다.

알림
사용자 에이전트는 NOTIFY를 사용하여 특정 이벤트의 발생을 가져옵니다. 일반적으로 NOTIFY는 구독자와 알리미 사이에 구독이 있을 때 대화 상자 내에서 실행됩니다.

알림자가 수신하면 각 NOTIFY는 200 OK 응답을 받게 됩니다.

NOTIFY에는 이벤트를 나타내는 이벤트 헤더 필드와 구독의 현재 상태를 나타내는 subscribestate 헤더 필드가 포함되어 있습니다.

구독 시작과 종료 시 항상 NOTIFY를 보내세요.

PUBLISH
PUBLISH는 사용자 에이전트가 이벤트 상태 정보를 서버에 보내는 데 사용됩니다.

PUBLISH는 여러 소스의 이벤트 정보가 있는 경우 매우 유용합니다.

PUBLISH 요청은 대화 상자로 전송되지 않는다는 점을 제외하면 NOTIFY와 유사합니다.

PUBLISH 요청에는 Expires 헤더 필드와 Min-Expires 헤더 필드가 포함되어야 합니다.

Reference
REFER는 사용자 에이전트가 대화 상자에 액세스하기 위해 다른 사용자 에이전트의 URI를 참조하는 데 사용됩니다.

REFER에는 Refer-To 헤더가 포함되어야 합니다. REFER의 필수 헤더입니다.

REFER는 대화 상자 내부 또는 외부로 보낼 수 있습니다.

A 202 Accepted는 REFER 요청을 트리거하여 다른 사용자 에이전트가 참조를 수락했음을 나타냅니다.

INFO
INFO는 사용자 에이전트가 미디어 세션을 설정한 다른 사용자 에이전트에게 호출 신호 정보를 보내는 데 사용됩니다.

이것은 엔드투엔드 요청입니다.

프록시는 항상 INFO 요청을 전달합니다.

UPDATE
세션이 설정되지 않은 경우 UPDATE를 사용하여 세션 상태를 수정합니다. 사용자는 UPDATE를 사용하여 코덱을 변경할 수 있습니다.

세션이 성립되면 재초대를 사용해 세션을 변경/업데이트하세요.

PRACK
PRACK은 신뢰할 수 있는 임시 응답 전송(1XX)의 수신을 확인하는 데 사용됩니다.

일반적으로 PRACK은 RSeq 신뢰할 수 있는 시퀀스 번호와 지원되는:100rel 헤더가 포함된 임시 응답을 수신할 때 클라이언트에 의해 생성됩니다.

PRACK에는 레이스 헤더에 (RSeq + CSeq) 값이 포함되어 있습니다.

PRACK 방법은 배송이 절대 신뢰할 수 없는 100번의 시도 응답을 제외한 모든 임시 응답에 적용됩니다.

PRACK에는 메시지 본문이 포함될 수 있으며 제안/답장 교환에 사용될 수 있습니다.

Message
SIP를 사용하여 인스턴트 메시지를 보내는 데 사용됩니다. IM은 일반적으로 문자 대화에 참여하는 참가자가 실시간으로 교환하는 짧은 메시지로 구성됩니다.

MESSAGE는 대화 상자 내부 또는 외부에서 보낼 수 있습니다.

MESSAGE의 내용은 이메일 본문에 MIME 첨부 파일로 로드됩니다.

200 OK 응답은 정상적으로 수신되어 메시지가 목적지에 전달되었음을 나타냅니다.

관련 추천:

php 인터뷰 질문 1: 스레드와 프로세스의 차이점(그런데 코루틴이 언급됩니다)

위 내용은 PHP 인터뷰 질문 2: 사용된 전송 프로토콜의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.