클라이언트와 서버간의 통신

2019. 11. 29. 15:36Security/네트워크

* 클라이언트와 서버간의 통신

프로그램은 프로그램끼리 통신. 예를들어 클라이언트에서 익스플로러를 서버에 접속할때는 서버의 아파티를 통해서 접속. 클라이언트의 포트번호는 1023번 이상의 아무 번호나 사용할 수 있다.

 

1023번까지는 iso를 통해서 인증 받은 표준 포트번호로 정해져 있어서 임의로 지정할수 없다.

 

아파치 : HTTP의 포트 번호(80)을 통해서 통신

 

vsftp : ftp의 포트 번호(21)을 통해서 통신

 

opensshd : ssh의 포트 번호(22)을 통해서 통신

[클라이언트쪽] 

 

TCP에서 응용계층에서 받은 메세지를 이용해 (메세지/ftp의 포트넘버(21)/자신의 포트넘버(3000))로 세그먼트 생성.

 

IP에서 TCP로부터 받은 세그먼트를 이용해 (세그먼트/서버의 IP 주소(2.1.1.2)/나의 IP 주소(1.1.1.2))로 데이터그램 생성.

 

Ethernet에서 IP로 부터 받은 데이터그램을 이용해 (데이터그램/나의 MAC 주소(A)/상대방의 MAC 주소(B))로 프레임 생성. 단, 네트워크 대역대가 다를 경우 라우터의 게이트웨이로 데이터를 전송 후에 수신자 쪽의 게이트웨이를 찾아 (데이터그램/나의 MAC 주소(A)/나의 게이트웨이 주소(R1))의 형태로 프레임을 전송.

 

[라우터]

라우터의 테이블에 서버의 MAC주소가 있다면 서버에게 바로 프레임을 (데이터그램/서버의 게이트웨이 주소(R2)/서버의 MAC주소)의 형태로 전송하고 만약 서버의 MAC주소가 없다면 네트워크 상에서 ARP 브로드캐스트를 통해 서버의 MAC주소를 찾아서 메세지를 전송한다. 

 

[서버쪽]

라우터에게 받은 메세지의 수신 MAC주소를 확인해 서버의 MAC주소와 일치한다면 프레임 안의 데이터그램을 IP에게 전송

 

IP에서 데이터그램의 송신 IP주소가 서버의 IP주소와 일치한다면 데이터그램 안의 세그먼트를 TCP에게 전송.

 

TCP에서 세그먼트의 포트번호를 확인후에 응용계층의 해당 포트넘버인 FTP로 메세지를 전송.

 

* 용어 및 개념 정리

세그먼트 : TCP에서 메세지를 이용해서 만든 패킷