hyo_jung
[Work Book] UMC 서버 2주차 본문
핵심 개념 키워드
클라이언트-서버 통신
프로토콜
- 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다.
- 기기 간 통신은 교환 되는 데이터의 형식의 대해 상호 합의를 요구하는데, 이런 형식을 정의하는 규칙의 집합을 프로토콜이라 한다.
HTTP
- 클라이언트와 서버 사이에 이루어지는 요청/응답 (request/response) 프로토콜이다.
- 웹 브라우저가 HTTP를 통하여 서버로부터 HTML 문서를 요청하면, 서버는 요청에 응답하여 필요한 정보를 사용자에게 전달한다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나게 된다.
- Stateless (무상태) : 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다. 따라서 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다.
- Connectionless (비연결성) : 클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP 연결을 끊어 연결을 유지하지 않는다.
- [네트워크] HTTP와 HTTPS
- HTTP, Stateless, Connectionless, HTTP 메시지 개념
- [네트워크] HTTP와 HTTPS 동작 과정
HTTPS
- HTTPS = HTTP + 암호화 + 증명서 + 완전성 으로 HTTP의 보안적 약점을 보완한 프로토콜이다.
- 웹 상에서 정보를 암호화하는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.
- HTTPS 통신에서는 실제 전송되는 데이터의 암호화에는 대칭키 암호화 방식을 사용하고 키 교환에는 공개키 암호화 방식을 사용한다.
- SSL
- 웹사이트와 브라우저 사이에 전송된 데이터를 암호화하여 인터넷 연결 보안을 유지하는 표준 기술이다.
- TLS
- SSL 프로토콜에서 발전된 후속 버전이다. SSL 3.0 버전부터 IETF에서 표준으로 정해서 TLS 1.0이 되었다.
- [네트워크] HTTPS 그리고 보안 (암호화/인증서/전자서명)
FTP
- TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다.
- FTP의 연결 설정을 위해서는 2개의 기본 채널이 필요하다.
- 명령을 내리고 어떤 파일에 액세스할 수 있는지 등의 기본 정보를 전달하는 명령 채널
- 2개의 장치 간에 파일 데이터를 전송하는 데이터 채널
- FTP의 연결 모드에는 2가지가 있다.
- 서버가 데이터 요청을 승인하는 능동 모드(액티브 모드)
- 사용자가 데이터 채널과 명령 채널 모두를 설정하는 수동 모드(패시브 모드)
- FTP는 보안이 약하다는 단점이 있다.
SFTP
- FTP에 보안 기능을 강화한 보안 파일 전송 프로토콜이다.
- 파일 전송 시 로그인 정보나 파일 정보를 암호화한 후 SSH 프로토콜을 이용하여 전송한다.
MYSQL
- 클라이언트가 SQL 명령을 서버에 보내고 서버는 SQL 명령에 응답한다.
- 사용자 인증이 필요하다. 사용자 별로 데이터베이스 접근을 제한할 수 있다.
- 클라이언트가 SSL을 설정하면 SSL 통신 채널을 제공한다.
SSH
- 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜이다.
- 네트워크 환경에만 있으면 물리적으로 기기에 접근하지 않고 원격 접속을 통해 컨트롤 할 수 있도록 도와준다.
- 암호화 기법을 사용하여 통신한다.
- SSH 키(Key)는 공개키(public key)와 비공개키(private key)로 이루어진다. 비공개키는 로컬 머신에 위치해야 하고, 공개키는 원격 머신에 위치해야 한다.
- 공개키와 비공개키를 비교하여 서로 한 쌍의 Key인지 검사하고 한 쌍을 이루는 것이 증명이 되면 두 컴퓨터 사이에 암호화된 채널이 형성되고 비대칭키를 통해 서로 대칭키를 교환한다.
- 이후 통신 되는 모든 데이터는 대칭키(세션 키)를 통해서 암호화가 이루어진다. 원격 접속이 해제되면 사용되던 세션 키는 다음 접속에서 사용할 수 없게 된다.
- SSH란 ?
네트워크 계층
OSI 7 계층

| 응용 계층(Application Layer) | 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. |
| 표현 계층(Presentation Layer) | 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다. |
| 세션 계층(Session Layer) | 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. |
| 전송 계층(Transport Layer) | 양 끝단(End to end)의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다. |
| 네트워크 계층(Network Layer) | 여러 개의 노드를 거칠 때마다 라우팅 해주는 역할을 하는 계층이다. |
| 데이터 링크 계층(Data Link Layer) | 포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층이다. |
| 물리 계층(Physical Layer) | 전기적인, 기계적인 신호를 주고받는 역할을 하는 계층이다. |
TCP/IP
- TCP
- 두 컴퓨터 간의 연결 지향 통신을 위한 전송 계층(Transport layer) 프로토콜이다.
- 연결 지향적(Connection-oriented)이므로 연결 설정과 연결 해제 과정이 필요하다.
- Three-way handshake로 연결 설정을 한다.
- 상대에게 통신을 하고 싶다는 메시지를 보낸다. (SYN)
- 상대는 그 메시지에 대한 응답 + 나도 통신 준비가 되었다는 메시지를 보낸다. (SYN-ACK)
- 2번에서 받은 메시지에 응답을 보낸다. (ACK)
- 흐름 제어, 혼잡 제어를 통해 신뢰성을 보장한다.
- 흐름 제어(Flow control) : 송신 측과 수신 측 사이의 데이터 처리 속도 차이를 해결하기 위한 기법
- 혼잡 제어(Congestion control) : 네트워크의 혼잡을 피하기 위해 송신 측의 데이터 전송 속도를 제어하기 위한 기법
- [네트워크] - TCP (흐름제어/혼잡제어)
- IP
- 송신 호스트와 수신 호스트가 정보를 주고받는 데 사용하는 프로토콜이다.
- 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다.
- 비 신뢰성 : 보낸 정보가 목적지까지 제대로 갔는지 보장하지 않는다.
- 비 연결성 : 송신자와 수신자 사이에 연결을 확립하지 않고 데이터를 전송한다.
IP
Packet
- 네트워크 전송의 용량 단위를 말한다.
- 큰 데이터를 작은 패킷들로 분할하여 전송한다.
- Header

- IPv4 헤더
| Version | IP 버전 정보 |
| IHL (Header Length) | 헤더의 길이 |
| TOS (Type of Service) | 서비스의 우선 순위 |
| Total Length | Payload까지 포함한 패킷의 길이 |
| Identification | 분열이 발생한 경우, 다시 패킷을 조합할 때의 조합번호 |
| IP Flag(D, M) | 패킷의 단편화 여부 |
| Fragment Offset | 분열되기 전의 총 길이 |
| TTL (Time to Live) | 패킷이 소멸되기 전 이동할 수 있는 단계의 수 |
| Procotol | 상위 프로토콜 |
| Check Sum | 헤더 오류체크 |
- [네트워크 보안] 패킷 헤더 구조(TCP, IP, UDP, ARP, ICMP)
- [네트워크] HTTP 요청/응답 헤더
- body
- 패킷의 실제 데이터 부분이다.
- Payload라고도 하며 HTML 이외에도 이미지와 같은 이진 데이터도 가능하다.
IPv4
- 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜이다.
- 비 신뢰성 : 데이터가 정확하게 전달될 것을 보장하지 않고, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다. (비 신뢰성)
- 신뢰성은 그보다 상위 프로토콜인 TCP에서(그리고 UDP에서도 일부) 보장한다.
- IPv4 주소는 32비트로 구성되어 있다. 네 부분으로 나뉘며 각 부분은 0~255사이의 수로 표현된다.
- IP주소는 인터넷주소자원 관리기관에서 부여한 네트워크 주소와 네트워크 상의 개별 호스트를 식별하기 위하여 네트워크 관리자가 부여한 호스트 주소로 구성된다.
- IPv4 주소체계
- 한국인터넷정보센터(KRNIC)
IPv6
- 인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜(version 6 Internet Protocol)로 제정된 차세대 인터넷 프로토콜을 말한다.
- Pv4 프로토콜의 주소가 32비트라는 제한된 주소 공간 및 국가 별로 할당된 주소가 거의 소진되고 있다는 한계로 인해 지속적인 인터넷 발전에 문제가 예상되어, 이에 대한 대안으로서 IPv6 프로토콜이 제안 되었다.
- IPv6 주소의 길이는 128비트로 늘어났다.
- IPv6 주소는 16비트 단위로 구분하며, 각 단위는 16진수로 변환되어 콜론(:)으로 구분하여 표기한다.
- 한국인터넷정보센터(KRNIC)
Domain
- 넓은 의미로는 네트워크 상에서 컴퓨터를 식별하는 호스트 명을 가리키며, 좁은 의미에서는 도메인 레지스트리에게서 등록된 이름을 의미한다.
- ip는 사람이 이해하고 기억하기 어렵기 때문에 각 ip에 이름을 부여할 수 있도록 한 것이다.
- 도메인은 컴퓨터의 이름과 최상위 도메인으로 구성되어 있다.
- 도메인이란? - 생활코딩
Port
서버에서 포트란?
- 각 프로토콜의 데이터가 통하는 논리적 통로이다.
- 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
- 포트 (컴퓨터 네트워킹) - 위키백과, 우리 모두의 백과사전
프로토콜별 포트 번호 정리
| 20 | FTP | 데이터 포트 |
| 21 | FTP | 제어 포트 |
| 22 | SSH | |
| 22 | SFTP | |
| 23 | Telnet | 암호화되지 않은 텍스트 통신 |
| 25 | SMTP | 이메일 전송에 사용 |
| 53 | DNS | 도메인 네임 시스템 |
| 80 | HTTP | |
| 443 | HTTPS | |
| 514 | Syslog | 시스템 로그 작성 |
TCP/UDP의 포트 목록 - 위키백과, 우리 모두의 백과사전
포트리스닝
- Listen 상태는 서버의 데몬이 떠서 port에 접속 요청이 오기를 기다리는 상태를 말한다.
- [리눅스] linux 에서 listen하고 있는 port 확인하는 4가지 방법
- [Windows] 윈도우 10 특정 포트 Listening 확인, 윈도우 10 포트 개방 확인
인바운드 / 아웃바운드
- 인바운드 : 서버 내부로 들어오는 것을 말한다.
- 인바운드 규칙 : 클라이언트가 서버 데이터에 들어올 수 있는 규칙을 의미한다.
- 아웃바운드 : 서버 바깥으로 나가는 것을 말한다.
- 아웃바운드 규칙 : 서버에서 나갈 수 있는 데이터에 대한 규칙을 의미한다.
데몬(Daemon)
- 특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스를 말한다.
- 서비스마다 각 서비스가 사용하는 port를 관리하는 데몬이 존재한다.
- 데몬은 서버가 부팅될 때 메모리에 로딩이 되고 서버가 죽을 때까지 자원을 계속 할당받는다.
Port forwarding
- 패킷이 라우터나 방화벽 같은 네트워크 게이트웨이를 통과하는 동안 네트워크 주소를 변환해주는 것을 의미한다.
- 원격 컴퓨터가 근거리 통신망(LAN) 내에 위치한 특정 컴퓨터나 서비스에 연결할 수 있게 한다.
- 포트 포워딩이란?
- 공유기
- WAN
- 광역 통신망
- 지리적으로 흩어져 있는 통신망을 의미한다.
- 지방과 지방, 대륙과 대륙처럼 지리적으로 완전하게 떨어져 있는 장거리 지역 사이를 연결하고 있는 통신망이다.
- LAN
- 근거리 통신망
- 학교, 회사 등 한 건물이나 일정 지역 내에서 컴퓨터나 단말기들을 고속 전송 회선으로 연결하여 프로그램 파일 또는 주변 장치를 공유할 수 있도록 한 네트워크 형태이다.
- [Network] LAN(근거리 통신망)이란 무엇인가?외부 IP (공인 IP)
- 근거리 통신망
- 외부 IP (공인 IP)
- 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다.
- 외부의 공개되어 있는 IP 주소이고 전세계에서 유일한 IP 주소를 갖는다.
- 내부 IP (사설 IP)
- 일반 가정이나 회사 등에 할당된 네트워크의 IP 주소이다.
- 라우터에 의해 로컬 네트워크상의 PC나 장치에 할당된다.
- 외부 포트
- 외부에서 내부의 서버로 접속할 때 사용하는 포트이다.
- 내부 포트
- 외부에서 외부 포트로 접속한 기기를 연결해줄 내부의 포트 번호
- 게이트웨이
- 한 네트워크에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점이다.
- 서로 다른 네트워크를 연결해주고 서로 다른 네트워크 상의 통신 프로토콜을 적절히 변환해주는 역할을 한다.
- 방화벽
- 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다.
- 네트워크를 통과하는 데이터를 허용하거나 거부하거나 검열, 수정한다.
- 내부와 외부의 접속 상황을 감시할 수 있어 병목 현상을 파악하는 데에도 활용할 수 있다.
- [Network] Windows 방화벽 - 인바운드 / 아웃바운드
- WAN
추가 개념 키워드
TCP vs UDP
[Network] TCP / UDP의 개념과 특징, 차이점
UDP
- TCP처럼 어플리케이션에 데이터를 전달하기 위한 비 연결 지향적 전송 계층(Transport layer) 프로토콜이다.
- 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 보낸다.
- 데이터 전달의 신뢰성이 떨어진다.
- 패킷들이 서로 다른 통신 선로를 통해 전달될 수 있으므로 패킷들의 순서가 바뀌어 전달될 수 있다.
- 중간에 패킷이 유실되거나 변조되어도 재전송을 하지 않는다.
TCP 예시
- TCP는 순서를 보장한다는 점과 신뢰도가 있다는 점에서 대부분의 HTTP 통신, 온라인 채팅처럼 순서대로 도착해야 하는 상황에서 사용된다.
UDP 예시
- UDP는 순서는 보장해주지 못하지만 실시간으로 반응해야 하는 실시간 동영상 플레이어나 게임, 혹은 DNS에서 사용한다.
DNS(Domain Name Server)
- 컴퓨터의 도메인 이름을 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.
- DNS는 도메인 네임 계층을 관리하며 해당 네임 계층과 주소 공간 간의 변환 서비스를 제공한다.
⭐Proxy⭐
- 보안 상의 이유로 직접 통신할 수 없는 두 점 사이에서 통신을 할 경우 프록시를 통해 중계를 한다.
- 클라이언트는 프록시 서버를 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있다.
- 프록시 서버는 컴퓨터 네트워크에서 다른 서버상의 자원을 찾는 클라이언트의 요청을 받아 중계하는 서버이다.
- 프록시는 크게 Forward proxy와 Reverse proxy 로 나뉜다.
- 프록시 서버 란? Proxy Server
- [10분 테코톡] 🐿 제이미의 Forward Proxy, Reverse Proxy, Load Balancer
Forward proxy
- 프록시 서버를 클라이언트들과 접근하고자 하는 원격 리소스 사이에 위치 시키는 것이다.
- 프록시 서버는 원격 서버로부터 요청된 리소스를 가져와서 요청한 사용자에게 돌려주는 역할을 수행한다.
- 캐시를 사용하여 캐시에 데이터가 남아 있다면 다음 요청 시 캐시에서 데이터를 가져오므로 성능 향상이 가능하다.
- 로컬 디스크에 데이터를 저장하며 클라이언트들은 사용 중인 웹 브라우저를 이용해 프록시 서버 사용 설정을 해야 하므로 프록시 서버를 사용하고 있다는 것을 인식할 수 있다.

Reverse proxy
- 프록시 서버를 인터넷 리소스 또는 인트라넷 리소스 앞에 위치시키는 방식이다.
- 실제 서비스 서버는 내부망에 위치시키고 프록시 서버만 내부에 있는 서비스 서버와 통신하여 결과를 클라이언트에게 제공하는 방식으로 서비스한다.
- 클라이언트들은 프록시 서버에 연결되었다는 것을 알지 못하게 되며 마치 최종 사용자가 요청 리소스에 직접 접근하는 것과 같이 느끼게 된다.
- 각 요청에 대한 데이터가 캐시되기 때문에 프록시 서버는 실제 서버들을 위한 부하조절 기능을 수행할 수 있다.

Forward Proxy, Reverse Proxy 정의와 차이점
네트워크 장비
라우터
- LAN을 연결해주는 장치로, 패킷에 담긴 목적지의 주소를 읽고 가장 적절한 통신경로를 이용하여 다른 통신망으로 전송하는 장치이다.
- 서로 다른 프로토콜로 운영하는 통신망에서 정보를 전달하기 위해 경로를 설정하는 역할을 제공하는 핵심적인 통신 장비이다.
- 통신 흐름을 제어하며 통신망 내부에 여러 보조 통신망을 구성하는 등의 다양한 통신망 관리 기능을 수행한다.
허브
- 전기적인 신호를 증폭시켜 LAN의 전송거리를 연장시키고 여러 대의 디바이스를 연결해 네트워크를 만들어주는 장비이다.
- 허브로 연결된 네트워크에서 하나의 디바이스에서 전송된 데이터 프레임을 허브로 연결된 모든 디바이스에게 전부 전송하는 플러딩이 발생한다.
스위치
- 허브는 한 디바이스에서 발생하는 Collision이 허브에 연결된 모든 영역의 노드들에게 영향을 미치지만 스위치는 Collision Domain을 나누어준다.
- 자신에게 연결된 디바이스들의 MAC 주소와 포트가 기록된 MAC 주소 테이블을 가지고 있다. 프레임이 자신에게 오면 목적지가 어디인지 파악하여 그 디바이스에게 프레임을 보낸다.
- 데이터의 전송 에러를 복구해주는 기능을 가지고 있다.
공유기
- ISP 업체에서 제공하는 한 개의 인터넷 IP 주소로 여러 대의 컴퓨터, 노트북 등이 인터넷을 공유할 수 있도록 한다.
- ISP에서 할당받은 하나의 IP 주소를 내부 네트워크에서 여러 개의 IP 주소로 변환한다.
이더넷(Ethernet)
- 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격이다.
- 물리 계층에서 신호와 배선, 데이터 링크 계층에서 MAC 패킷과 프로토콜 형식을 정의한다.
MAC 주소
- 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자이다.
- 대체적으로 네트워크 인터페이스 컨트롤러(NIC)의 제조업체가 할당하며 하드웨어에 저장된다.
'개발 > Backend' 카테고리의 다른 글
| [Work Book] UMC 서버 5주차 (0) | 2021.11.07 |
|---|---|
| [Work Book] UMC 서버 4주차 (0) | 2021.11.04 |
| [Work Book] UMC 서버 3주차 (0) | 2021.10.18 |
| Quick DBD 사용 후기 (0) | 2021.10.10 |
| [Work Book] UMC 서버 1주차 (0) | 2021.10.02 |