강의 내용

Protocol

컴퓨터와 컴퓨터, 다른 기계가 정보나 데이터를 주고받기 위하여 정한 통신 규약

HTTP

HyperText Transfer Protocol

텍스트 기반의 통신 규약으로써, 서버와 클라이언트가 인터넷에서 데이터를 주고 받기 위한 프로토콜

요청(requests) : 클라이언트 -> 서버

응답(responses) : 서버 -> 서버

URL(Uniform Resouce Lacators) : 서버에 자원을 요청하기 위해 입력하는 영문 주소

HTTP 요청 메서드 : 요청하는 데이터에 특정 동작을 수행하기위해 사용

  • GET : 존재하는 자원에 대한 요청
  • POST : 새로운 자원을 생성
  • PUT : 존재하는 자원에 대한 변경
  • DELETE : 존재하는 자원에 대한 삭제

HTTP 상태코드 : 서버에서 설정해주는 응답 정보

2xx - 성공 : 대부분 성공을 의미

  • 200 : GET 요청에 대한 성공
  • 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
  • 205 : Resent Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
  • 206 : Partial Content. 성공했으나 일부 범위의 데이터만 반환

3xx - 리다이렉션 : 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우

  • 301 : Moved Permanently. 요청한 자원이 새 URL에 존재
  • 303 : See Other. 요청한 자원이 임시 주소에 존재
  • 304 : Not Modified. 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고

4xx - 클라이언트 에러 : 클라이언트 코드가 잘못되어, 유효하지 않은 자원을 요청했거나, 요청이나 권한이 잘못된 경우

  • 400 : Bad Request. 잘못된 요청
  • 401 : Unauthorized. 권한 없이 요청
  • 403 : Forbidden. 서버에서 해당 자원에 대해 접근 금지
  • 405 : Method Not Allowed. 허용되지 않은 요청 메소드
  • 409 : Conflict. 최신 자원이 아닌데 업데이트 하는 경우

5xx - 서버 에러 : 서버 쪽에서 에러가 난 경우

  • 501 : Not Implemented. 요청한 동작에 대해 서버가 수행할 수 없는 경우
  • 503 : Service Unavailable. 서버가 과부하 또는 유지 보수로 내려간 경우

 

FTP

File Transfer Protocol

파일 전송 프로토콜

현재는 보안이 좋지 않아서 실무에서 사용X

데이터를 전달하는 방식에 따라 액티브와 패시브 모드가 있음

 

SFTP

SSH + FTP

SSH의 파일 전송 프로토콜

FTP의 형태를 가지고 있지만 내용물은 SSH를 사용하여 연결

 

MySQL

MySQL에서 사용하는 프로토콜

MySQL에 접속할 때, SQL문을 실행할 때 클라이언트와 서버가 어떤식으로 패킷을 송수신 할지 정해놓은 것

 

SSH

Secure Shell

원격 호스트에 접속하기 위해 사용되는 보안 프로토콜

사용 예시

  • 데이터 전송 : ex) 깃허브에 푸쉬할 때 SSH를 활용해 파일 전송
  • 원격 제어 : ex) AWS의 인스턴스 서버에 접속하여 해당 머신데 명령을 내리기 위해 SSH를 통해 접속

다른 컴퓨터와 통신을 하기위해 비밀번호를 사용하지 않고 한쌍의 key를 통해 접속하려는 컴퓨터와 인증 과정을 거치게 됨

  • Public Key : 공개되어도 비교적 안전. 메시지를 전송하기 전 암호화. 암호화는 가능하지만 복호화는 불가
  • Private Key : 절대로 외부에 노출되어서는 안되며, 본인의 컴퓨터 내부에 저장. 암호화된 메시지를 복호화 

 

IP

Internet Protocol

IP 주소 (Internet Protocol Address) : 다른 호스트와 데이터를 주고 받기 위해 자신을 구분하는 특수한 번호 
                                                          4개의 숫자 (0~255) 와 점(.) 으로 구성 
                                                          ex) 127.0.0.1

도메인 : 사람이 이해하고 기억할 수 있도록 각 ip에 이름을 부여한 것
              ex) www.naver.com

 

Port

IP 내에서 애프리케이션 상호 구분(프로세스 구분)을 위해 사용하는 번호

포트 숫자 : IP 주소가 가리키는 PC에 접속할 수 있는 채널을 의미

  • http : 80번
  • https : 443번
  • ssh : 22번
  • ftp : 21번
  • sftp : 22번
  • mysql : 3306번

IP를 통해 접속한 클라이언트에게 모든 포트를 개방하는 것은 위험하기 때문에 인바운드 규칙과 아웃바운드 규칙을 사용

  • 인바운드 규칙 : 클라이언트가 자신의 서버 데이터에 들어올 수 있는 규칙. 기본적으로 모든 포트를 닫는것이 규칙
  • 아웃바운드 규칙 : 서버에서 나갈 수 있는 (반출할 수 있는) 데이터에 대한 규칙. 기본적으로 모든 포트에게 허용

 

Port Forwading

외부 IP를 통해 접속한 클라이언트가 특정 포트를 통해 요청하면 내부 ip로 보내서 처리하는 것

ex) 공유기에게 길을 만들고 이정표를 달아주는 것 

외부 IP(공인 IP) : 외부에 공개되어 있는 IP. 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 컴퓨터에서 접근 가능

내부 IP(사설 IP) : 공유기에 연결된 클라이언트들이 서로를 식별하기 위해 가지는 IP

외부 포트 : 외부 기기가 접근할 때 사용하는 포트

내부 포트 : 공유기에 연결된 각 컴퓨터가 공유기로부터 부여받은 내부 전용 포트

 

AWS

Amazon Web Service

아마존에서 제공하는 클라우드 서비스로, 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스 제공

 

AWS EC2

Amazon Elastic Compute Cloud

AWS에 일정 비용을 지불하고 가상의 컴퓨터를 빌려서 사용할 수 있는 서비스

하드워드 등에 대한 구축 부담이 줄어서 편하게 애플리케이션을 개발하고 배포할 수 있음

AWS EC2를 사용하여 가상 서버를 구축하고 네트워킹을 구성하며 스토리지 관리 가능

 

 

실습 내용

포트포워딩 실습

공유기를 통한 포트 포워딩 실습

 

AWS 실습

AWS EC2를 생성하는 실습

생성 후 보안그룹 - 인바운드 규칙에서 HTTP를 AnyWhere-IPv4, AnyWhere-IPv6 추가

탄력적 IP주소를 받아서 생성된 AWS EC2와 연결 (해지할 때 탄력적 IP주소도 같이 해지 해야함)

WinSCP를 통해 SSH키 등록

 

 

워크북 및 추가 개념

SSL

네트워크 상 다른 컴퓨터에 로그인 하거나 원격 시스템에서 사용하는 프로토콜

 

TCP

서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜

신뢰성 있는 데이터 전달

: 데이터를 전송하는 과정에서 손실되거나 순서가 바뀌어서 전달이 될 수 있는데, 이때 손실을 검색해서 교정하고 순서를 재조합 하는 것

데이터 전송을 위한 연결을 만드는 연결지향 프로토콜

기능

  • 패킷이 빠졌을 경우 재전송 요청
  • 패킷에 일련 번호를 줌으로써 서로 달리 도착할 수 있는 패킷의 순서를 재조합

 

IP Packet

IP에 의해 전송되는 데이터 묶음

헤더 필드 + 데이터 필드로 구성

  • 헤더 필드 : 패킷을 목적지까지 전송하기 위해 IP 계층에서 필요한 값들이 포함
  • 데이터 필드 : TCP, UDP와 같은 상위 계층에서 전달된 PDU가 삽입

 

  • 버전(Version) : IP 프로토콜의 버전을 의미 (IPv4 or IPv6)
  • 헤더 길이(Header Length) : 옵션 필드를 포함한 헤더의 총 길이
  • 서비스 타입 (Service type) : IP 패킷의 우선순위를 결정
  • 전체 길이(Total Length) : 헤더 + 데이터를 포함한 IP 패킷의 전체 길이
  • 식별자(Identification) : 패킷을 조립하거나 분해할때 식별하는 번호
  • 플래그(Flag) : 패킷이 단편화되었는지 아닌지 단서를 제공하는 역할
  • 단편화 옵셋(Fragment Offset) : 식별자필드와 플래그필드를 이용하여 패킷을 재조립하기 위해 분할된 패킷간으 ㅣ순서에 대한 정보를 제공
  • Time-To-Live(TTL) : 패킷이 경유할 수 있는 최대 홉 수
  • 프로토콜(Protocol) : IP 패킷이 어떤 상위 프로토콜과 관련되는지 나타냄
  • 헤더 체크섬(Header Checksum) : 오류 발생을 검사하기 위한 필드
  • 송신자 IP주소(Source Address) : 출발지 주소
  • 수신자 IP주소(Destination Address) : 목적지 주소

 

IPv4

IP 주소체계의 4번째 버전

0~255까지의 수로 표현

2의 32승개의 IP주소를 표현 가능

 

IPv6

IPv4로 할당할 수 있는 PC가 한계를 넘어서게 되어 등장

2의 128개의 IP주소를 표현 가능

 

 

후기

다양한 프로토콜에 대해서 알 수 있던 시간이었다.

포트포워딩에 대해 처음 알 게 되었는데, 처음에는 개념이 어려웠다. 

하지만 스터디 시간에 좀 더 대화를 나눠보면서 포트포워딩에 대한 개념을 다잡을 수 있었다.

복사했습니다!