# 03 통신 서비스와 프로토콜

* Intro
  * 통신서비스와 프로토콜
    * 통신서비스는 컴퓨터 속에 있는 프로그램끼리 정보를 주고 받아 이루어진다.
    * 서버: 서비스 제공기능
    * 클라이언트: 서비스를 받는 기능
    * 대부분의 통신 서비스는 서버와 클라이언트의 주고받기 형태
    * application protoccol: 서버와 클라이언트 간에 수행되는 서비스 고유의 주고받기 '약속'
* 서버와 클라이언트
  * 서버(server): 서비스를 제공하는 측
    * 서비스를 제공하는 기능을 가지고 있는 프로그램.
    * 서비스 종류에 맞게 다양한 서버가 있음.
  * 클라이언트(client): 서비스를 받는 측
    * 서비스를 요청하고 사용자가 알 수 있는 형태로 표시하는 기능을 가진 프로그램.
* 데이터가 어디있지?
  * 서버에게 데이터 요청시, 데이터 있는곳을 확실히 표시할 필요가 있음.
  * 네트워크 상에서 자원이 어디 있는지 알려주기위한 규약
  * URL: 네트워크 상에 있는 특정 데이터 등을 표시할 때 사용
    * 예: [https://www.blabla.co.kr:80/src/components/index.html](https://www.blabla.co.kr:80/src/components/index.html)
      * https: 스키마, 서비스의 종류를 나타냄(종류: http, https, mailto, ftp, telnet,file)
      * www.blabla.co.kr: 도메인, 서버(숫자도 가능)
      * 80: 포트번호, application protocol 식별번호. (스킴명에 의해 판단가능, 생략가능)
      * src/compoennts: 경로, 서버 내 파일 주소
      * index.html 파일 이름
  * gTLD(generic Top Level Domain): com, net, org, biz, info 와 같이 나라 관계없이 사용하는 조직속성(국가코드 필요X)
  * ccTLD:국내에서만 사용가능한 조직 속성: 예: co.kr
* WWW
  * (world wide web)
    * 하이퍼텍스트(HyperText): 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트.
    * 웹페이지는 하이퍼텍스트라는 문서로 작성되어 있음.
    * 따라서, 전 세계 인터넷에서 정보를 공개하고 공유하는 서비를 가리켜 WWW라고 함.
  * www browser(application)
    * www에 대한 클라이언트
    * 서버로부터 받은 데이터를 사용자가 알기 쉬운 형식으로 표시
  * WWW 개요
    * \[WWW브라우저(클라이언트)] <= \[HTTP:Hyper text transfer protocol] => \[WWW서버]
* 전자메일
  * 예: minhee@gmail.com
    * minhee: 메일 계정, 사용자 고유의 문자열
    * @: at(\~에있는)
    * gmail.com: 도메인, 메일박스가 있는 서버의 주소
  * 전자메일 개요
    * \[메일러(클라이언트 송신)] =>(SMTP(프로토콜))=> \[메일서버(송신)] =>\[메일서버(수신)] => (POP) => \[메일러(클라이언트 수신)]
    * SMTP서버: 메일 전송을 담당하는 프로그램
    * POP서버: 클라이언트에게 메일 제공을 담담하는 프로그램
* 파일전송
  * 대표: FTP (File Transfer Protocol)
    * FTP서버 내에 미리 전송 공간을 확보해두고, 클라이언트가 파일 업로드하거나 다운로드가 가능하게 함.
  * FTP 클라이언트: 전용에플리케이션이나 FTP서비스를 처리하는 www브라우저 등
  * \[통신이 허용된 클라이언트] < 데이터 전송 > \[FTP서버(특정 전송 공간)]
  * FTP 는 보안에 문제 있을 수 있어, 암호화해서 전달하는 FTPS, SFTP를 권장.
* 원격 로그인
  * 떨어져 있는 장소의 다른 컴퓨터를 조작할 수 있는 서비스.
  * 대표: Telnet
    * Telnet 클라이언트: telnet 명령이나 테라텀이라는 app
    * test: telnet naver.com 80 => 성공시, Telnet naver.com이라고 뜨고 기본포트열림(80)
    * 클라이언트의 명령(command)가 서버로 보내지고, 처리결과가 클라이언트로 반환
    * 서버측의 OS에 맞추어 명령 사용
  * SSH(Secure Shell)
    * 다른 컴퓨터에 로그인할 때, 통신을 암호화하는 프로토콜
    * Telnet에는 암호화 기능이 없기때문에, SSH로 명령을 암호화 해서 보냄.
    * (제 3자가 패킷을 훔쳐가더라도 해독이 어려움)
  * 데스크톱 공유
    * 통신프로토콜(RDP: Remote Desktop Protocol)
    * 네트워크상 다른 컴퓨터의 desk top 환경에 접속해 조작하는 기술
    * 윈도우: 원격 데스크톱
    * MacOS: 화면공유
* 파일공유
  * 파일이나 에플리케이션 등을 다른 사용자와 함께 사용할 수 있도록 하는 통신 서비스
  * OS에 따라 다른 프로토콜
    * UNIX (Samba) - Windows
    * 같은 OS 환경끼리면, 별도로 필요한 app 은 없음
  * 주로 사용되는 프로토콜
    * Windows: SMB(Server Message Block), CIFS(Common Internet File System)
    * UNIX: NFS(Network File System)
* 기타서비스
  * IP
    * VoIP(Voice over IP): 상대의 전화번호나 음성 데이터를 패킷화 해서 전달하는 기술
    * IP 전화: VoIP기술을 사용해서 인터넷이나 독자적인 네트워크에서 통신하는 전화서비스
    * IP전화가 일어나는 2가지 공정
      * SIP (Session Initiation Protocol): 전화 걸어서 상대에게 호출되기까지 공정
      *   RTP(Real Time Transport Protocol) or RTCP(RTP Control Protocol): &#x20;

          : 실제 대화가 시작된 후 주고받는 공정
  * IM(인스턴트 메신저)
    * 미리 등록한 클라이언트(멤버)가 통신할 수 있는 상태인지 아닌지 상태 표시하고 실시간으로 통신할 수 있는 서비스
    * IM용서버를 통해 상대의 상태 체크, 메세징, 음성통신, 전자회의를 할 수 있음
    * 상대의 상태로는 오프라인, 자리비움, 온라인등의 표시가 가능
    * IM은 기능마다 개별 프로토콜을 사용하며, 통일 되어 있지 않기 때문에 다른 클라이언트 끼리는 통신 할 수 없음
