-
프로토콜의 세가지 요소
1. 구문(Syntax): 데이터의 형식이나 신호로, 부호화 방법 등을 정의
- 의미(Semantics): 오류제어, 동기제어, 흐름제어 와 같은 각종 제어 절차에 관한 제어 정보 정의
- 순서(Timing): 송/수진자 간 혹은 양단(end to end)의 통신 시스템과 망 사이의 통신 속도나 순서 등을 정의
-
프로토콜의 기능
1. 주소설정(Addressing): 각 전송 계층에 맞는 송/수신자의 주소 지정
- 순서제어(Sequence Control): 데이터 단위가 전송될 때 보내지는 순서 명시
- 데이터 대열의 단편화 및 재조합(Fragmentation & Reassembly): 전송 효율이 높은, 작은 단위로 단편화 및 응용프로그램에서 사용하기 위한 재조합
- 캡슐화(Encapsulation): 데이터에 제어 정보를 덧붙임
- 연결제어(Connection Control): 연결설정, 데이터전송, 연결해제에 대한 통제 수행
- 흐름제어(Flow Control): 송신측 개체로부터 오는 데이터의 양이나 속도 조절
- 오류제어(Error Control): 데이터를 교환할 때 SDU(Service Data Unit)나 PCI(Protocol Control Information)에 대한 오류검사
- 동기화(Synchronization): 두 개체 간에 데이터가 전송될 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 서로의 상태를 일치시킴
- 다중화(Multiplexing): 여러 시스템이 동시에 통신할 수 있는 기법
- 전송 서비스: 우선순위 결정, 서비스 등급과 보안 요구 등을 제어
-
HTTP
- HYPERTEXT TRANSFER PROTOCOL
- 웹 상에서 클라이언트와 서버가 서로 정보를 주고받을 수 있도록 하는 규약
- 클라이언트는 서버에 데이터 전송을 요청(Request)할 수 있는 클라이언트 소프트웨어(크롬 등)가 설티된 컴퓨터를 의미한다.
- 클라이언트는 URL(Uniform Resource Locator)로 된 HTTP를 통해 서버에게 정보 송신을 요청한다.
URL의 예: http://velog.io/network-protocol
1. http: 자원에 접근하기 위한 http 프로토콜
2. velog.io: 서버의 위치
3. network-protocol: 서버에서 컴퓨터가 요청한 자원의 위치
- 서버는 응답하는(Response)소프트웨어(아파치, nginx, IIS 등)가 설치된 컴퓨터를 의미한다.
- 서버는 클라이언트의 요청을 해석하고, 클라이언트의 요청 및 서버관리자가 설정한 알고리즘에 준하는 정보를 클라이언트에게 송신한다.
- 암호화되지 않아 도난이나 변조, 도청이 가능하다.
- HTTP송수신 에러
- 403: 서버가 요청을 거부 / 사용자가 권한을 가지고 있지 않을때 발생
- 404: Not Found / URL로 서버 접속은 했지만, 그 이후의 요청 정보(자원)를 서버가 가지고 있지 않을 때 발생
- 500: 서버에 무언가 오류가 있을 때 발생
-
HTTPS
- HyperText Transfer Protocol over Secure Socket
- HTTP의 일반텍스트에 SSL이나 TLS프로토콜을 씌워 데이터를 암호화하는 기법이다.
<TLS는 SSL의 최신 버전이며, 현재는 SSL이 IEFE에 의해 사용 중지되었다.>
- 로그인이나 결제화면에 주로 쓰인다.
- 암호화: 어떤 정보를 암호화된 정보로 바꾸는 것
- 복호화: 암호화된 정보를 다시 원래 정보로 바꾸는 것
- 키: 암호화, 복호화할 때 쓰는 비밀번호
- HTTPS는 공통키 방식과 비대칭키 방식을 같이 사용한다.
& 공통키 방식: 암호화할 때와 복호화할 때 같은 키를 사용하는 방식
1. 장점: 단순한 구조로 CPU를 적게 쓰고 빠르다.
- 단점: 공통키를 빼앗기면 복호화를 할 수 있으므로, 보안에 취약하다는 단점이 있다.
& 비대칭키 방식: 암호화할 때와 복호화할 때 다른 키를 사용하는 비대칭 방식
서버 -- 인증서, 공개키 --> 클라이언트
클라이언트 -- 공통키 + 공개키, 인증서 --> 서버
서버 -- 인증서, 공개키 일치 확인 후 공통키 복호하여 요청에 대응
- 장점: 키 전송 과정중 해킹 당해도 해커가 공개키 해독을 할 수 없으니 공통키 방식보다 안전하다.
- 단점: 공통키 방식보다 느리고 리소스 소비가 크다.
"HTTPS가 공통키, 비대칭키 방식을 같이 사용한다."
=> 비대칭키 방식이 가진 이점은 이어가되, 전송 소요시간 및 리소스 부담은 줄이는 방식
=> 서버가 되받은 공개키+공통키를 복호화하는 과정을 핸드쉐이크 라고 함
=> 암호화(클라이언트), 복호화(서버) 때 공개키가 동일하게 사용된다.
-
SSH
- 터미널 내에서, 서버의 IP주소를 이용하여 PC->서버로 원격접속 가능하게 해주는 네트워크 접속 프로토콜
- 네트워크 상에서 패킷(데이터)를 전송할 때 암호화 통신을 지원하는 프로토콜 (Telnet과의 차이)
- sh 또는 bash 라는 셸 명령어 체계를 사용(Telnet과 동일)
- 카페24, 가비아 등의 호스팅서비스나 AWS, 구글클라우드와 같은 클라우드서비스는 SSH 서비스를 기본 설치된 상태로 제공한다.
그 외의 경우 SSH서버를 직접 설치해야 한다.
- 22번 tcp포트가 방화벽에서 열려있어야 한다.
- SSH서버 프로그램이 설치 및 구동되고 있어야 한다.
- SSH프로토콜로 접속할 수 있는 SSH클라이언트(Putty 등)가 필요하다.
=> putty프로그램과 puttygen 유틸을 다운받아, puttygen으로 SSH키를 생성하고, 리눅스 서버에 SSH키 등록, putty 프로그램으로 리눅스 서버 SSH접속
SSH는 서버에서 명령을 안전하게 실행하기위한 것입니다.
SSL은 개인 정보를 안전하게 통신하는 데 사용됩니다.