https://hyonee.tistory.com/136
더 작성하기..........ㅠ
네트워크란?
https://www.whatap.io/ko/blog/149/
네트워크 개념 잡기
네트워크에 필요한 물리적 장치부터 통신 규약인 프로토콜까지, 네트워크 기초 다지기!
www.whatap.io
네트워크의 종류, LAN과 WAN
LAN(Local Area Network, 근거리 영역 네트워크)이란 지리적으로 가까운 기기들이 서로 연결된 소규모의 네트워크.
구리선을 짜 넣은 LAN 케이블 사용.
통신에 필요한 선이 짧으므로 데이터를 주고받는 데에 오류가 적고 속도가 빠르다.
WAN(Wide Area network)이란 지역이나 국가와 같이 넓은 영역을 연결하는 광역 네트워크.
광섬유 케이블이나 회선을 이용.
LAN에 비해 속도가 느리고 오류 발생 확률이 높다.
HTTP
HTTP 프로토콜이란
HTTP(Hyper Text Transfer Protocol)이란 데이터를 주고받기 위한 프로토콜이며, 서버/클라이언트 모델을 따른다.
HTTP는 상태 정보를 저장하지 않는 Stateless 한 특징과 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless 한 특징을 가지고 있다.
장점
통신 간의 연결 처리 상태나 상태 정보를 관리할 필요가 없어서 서버 디자인이 간단하다.
각각의 HTTP 요청에 독립적으로 응답만 보내주면 됨.
단점
이전 통신의 정보를 모르기 때문에 매번 인증을 해주어야 한다.
이를 해결하기 위해 쿠키(cookie 냠냠)나 세션(session)을 사용해 데이터를 처리한다.
HTTP와 HTTPS의 차이점
HTTP + SSL = HTTPS
HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에 HTTP로 중요한 정보를 주고받으면 제 3자에 의해 조회될 수 있다.
이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS이다.
* SSL(Secure Socket Layer) : 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약
HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 통신하고, SSL이 TCP와 통신함으로써 암호화와 증명서, 안정성 보호를 이용할 수 있다.
Cookie(쿠키)와 Session(세션)의 차이점
쿠키는 클라이언트에 저장되지만, 세션은 서버에 저장(서버의 자원을 사용)된다. 서버에 요청을 보내는 사용자가 많은 경우 세션은 부하가 심할 수 있다.
속도 : 쿠키 > 세션
보안 : 쿠키 < 세션
HTTP Method와 각각 사용되는 경우
HTTP 메서드는 클라이언트가 서버에게 사용자 요청의 목적을 알리는 수단.
- GET : 데이터 조회
- POST : 요청 데이터 처리
- PUT : 데이터 변경
- PATCH : 일부 데이터만 변경
- DELETE : 데이터 삭제
GET과 POST의 차이
둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식.
GET은 데이터를 조회하기 위해 사용되는 방식. 데이터(url)를 header에 추가하여 전송.(url 상에 ?뒤에 데이터가 붙어 request를 보냄, 데이터의 크기가 제한적)
URL에 데이터가 노출되므로 보안적으로 중요한 데이터를 포함해서는 안됨.(ex. password)
POST는 데이터를 추가 또는 수정하기 위해 사용되는 방식. 데이터를 body에 추가하여 전송하는 방식.
완전하지는 않지만(암호화를 사용하지 않는 이상 GET 방식과 비슷함) URL에 데이터가 노출되지 않아 GET보다는 안전.
GET 방식의 요청은 브라우저에서 caching 할 수 있기 때문에 POST 방식으로 보내야 하는 것을 GET 방식으로 보내게 된다면,
기존에 caching 되었던 데이터가 응답될 가능성이 존재한다. => 목적에 맞는 기술을 사용할 것!
TCP and UDP
TCP와 HTTP 차이
HTTP는 비연결형 프로토콜, TCP는 연결형 프로토콜
HTTP는 단방향 통신만 가능, TCP는 양방향 통신 가능
HTTP는 응용계층(7), TCP는 전송계층(4) 프로토콜
TCP와 UDP 비교
TCP(Transmission Control Protocol, 전송 제어 프로토콜)는 연결형 서비스, 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다.
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 비연결형 서비스, 3-way handshaking 과정을 사용하지 않기 때문에 신뢰성이 떨어진다. 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다.
TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고, UDP는 실시간성이 중요한 스트리밍에 자주 사용(DNS)됨.
예시?
TCP 통신은 종료 시에도 3-way handshaking을 사용하나?
TCP는 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking 과정을 통해 연결을 해제한다.
3-way handshaking and 4-way handshaking
https://asfirstalways.tistory.com/356 <- 읽어보기!
3-way handshaking이란 TCP 네트워크에서 통신하는 장치가 서로 연결이 잘 되었는지 확인하는 방법.
송신자와 수신자는 총 3번에 걸쳐 데이터를 주고받으며 통신이 가능한 상태인지 확인한다.
4-way handshaking이란 TCP 네트워크에서 통신하는 장치의 연결을 해제하는 방법.
송신자와 수신자는 총 4번에 걸쳐 데이터를 주고받으며 연결을 끊는다.
웹 동작 방식
www.naver.com에 접속할 때 생기는 과정에 대해 설명해 보세요.
1. 사용자가 브라우저에 URL 입력
2. 브라우저는 DNS 서버에 도메인 네임으로 서버의 진짜 주소를 찾음
3. IP 주소로 웹 서버에 TCP 3-way handshake로 연결 수립
4. 클라이언트는 웹 서버로 HTTP 요청 메시지를 보냄
5. 웹 서버는 HTTP 응답 메시지를 보냄
6. 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력
OSI 7 Layer
물데네전세표응
계층으로 나눈 이유? 계층화를 함으로써 통신이 일어나는 과정을 단계별로 알 수 있고, 문제가 생기면 그 단계만 수정하면 된다.
1 물리 계층 : 데이터를 전기 신호로 바꿔주는 계층(단위: bit, 장비: 케이블, 리피터, 허브)
2 데이터링크 계층 : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층(단위: frame, ex: 이더넷)
3 네트워크 계층 : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층(단위: packet, ex: Router)
4 전송 계층 : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층(단위: segment, ex: TCP, UDP)
5 세션 계층 : 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
6 표현 계층 : 데이터의 형식(format)을 정의하는 계층
7 응용 계층 : 사용자에게 통신을 위한 서비스 제공, 인터페이스 역할(ex: HTTP, FTP, DNS)
세션 기반 인증과 토큰 기반 인증의 차이
세션 기반 인증은 클라이언트로부터 요청을 받으면 클라이언트의 상태 정보를 저장하므로 stateful 한 구조를 가지고,
토큰 기반 인증은 상태 정보를 서버에 저장하지 않으므로 stateless 한 구조를 가진다.
단일 도메인 => 세션기반인증
아니면 => 토큰 기반인증
why? 세션을 관리할 때 사용되는 쿠키는 단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 있기 때문에 여러 도메인에서 관리하는 것은 어렵다. (CORS 문제)
stateful 한 세션 기반 인증 방식을 사용하면 어떤 단점이?
1. 서버에 세션을 저장하기 때문에 사용자가 증가하면 서버에 과부하 -> 확장성이 낮다.
2. 해커가 훔친 쿠키를 이용해 요청을 보내면 서버는 올바른 사용자가 보낸 요청인지 알 수 없다. => 세션 하이재킹 공격
JWT 토큰이란?
JWT(JSON Web Token)는 JSON 포맷을 이용하는 Claim 기반의 웹 토큰이며, 토큰 자체를 정보로 하는 Self-Contained 방식으로 정보를 안전하게 전달한다.
JWT는 Header(헤더), Payload(내용), Signature(서명)로 구성되며, 각 파트를 점(.)으로 구분한다.
*Claim : 사용자 정보나 데이터 속성 등을 의미
- Header(헤더) : 토큰의 타입과 해시 암호화 알고리즘으로 이루어져 있다.
- Payload(내용) : 토큰에 사용자가 담고자 하는 정보를 담는다. 내용에는 Claim이 담겨있고 JSON(key, value) 형태의 한 쌍으로 이루어져 있다.
- Signature(서명) : 토큰을 인코딩하거나 유효성 검증할 때 사용하는 고유한 암호화 코드. 헤더와 내용의 값을 인코딩한다.
대칭키, 비대칭키 암호화 방식
둘 다 양방향 암호화 방식
대칭키는 암호화와 복호화에 같은 암호키를 쓰는 알고리즘이다.
키가 하나라 위험하기 때문에 이를 보완한 방법이 비대칭키(공개키) 방식이다.
비대칭키는 암호화와 복호화를 할 때 서로 다른 키를 사용하는 알고리즘이다.
타인에게 절대 노출되어서는 안 되는 개인키(private key)와 공개적으로 개방되어 있는 공개키(public key)를 쌍으로 이룬 형태이다.
Connection Timeout과 Read Timeout
서버 자체에 클라이언트가 어떤 사유로 접근에 실패했을 시 적용되는 것이 Connection Timeout이다.
클라이언트가 서버에 접속을 성공했으나, 서버가 로직을 수행하는 시간이 너무 길어 제대로 응답을 못 준 상태에서 클라이언트가 연결을 해제하는 것이 Read Timeout이다. 이 경우 클라이언트는 해당 상황을 오류로 인지하고, 서버는 계속 로직을 수행하고 있어 성공으로 인지해 양 사이드 간 싱크가 맞지 않아 문제가 발생할 수 있다.
Public IP와 Private IP의 차이
Public IP는 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이며, 외부에 공개되어 있는 IP 주소이다.
Private IP는 일반 가정이나 회사 내 등에 할당된 네트워크 IP 주소이며, IPv4의 주소 부족으로 인해 서브넷팅된 IP이기 때문에 라우터(공유기)에 의해 로컬 네트워크 상의 PC나 장치에 할당된다.
Private IP 주소 만으로는 인터넷에 직접 연결할 수 없고, 라우터를 통해 1개의 Public IP를 할당하고, 라우터에 연결된 개인 PC는 Private IP를 각각 할당받아 인터넷에 접속할 수 있다.
Load Balancing 이란?
컴퓨터 네트워크 기술의 일종으로 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것.
서버에 가해지는 부하(로드)를 분산(밸런싱)
Scale-out 방식을 통해 증가한 트래픽에 대처하기로 했다면, 여러 대의 서버로 트래픽을 균등하게 분산해 주는 로드 밸런싱이 반드시 필요함.
Load Balancing Algorithm
Round Robin Method (라운드 로빈 방식)
Weighted RR Method (가중 라운드 로빈 방식)
Least Connection Method (최소 연결 방식)
IP Hash Method (IP 해시 방식)
L4, L7 Load Balancing
Subnetting이란?
Subnet : IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크
Subnet Mask : 서브넷을 만들 때 사용, IP 주소 체계의 Network ID와 Host ID를 분리하는 역할 (기본 서브넷 마스크)
Subnetting : IP 주소 낭비를 방지하기 위해 원본 네트워크를 여러 개의 서브넷으로 분리하는 과정
References
- https://velog.io/@kkyes1210/CS-%EC%A0%95%EB%A6%AC-%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EC%A0%95%EB%A6%AC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
- https://code-lab1.tistory.com/34
나 왜 이렇게 예쁘게 정리 못해.......
'CS' 카테고리의 다른 글
Development (0) | 2023.12.01 |
---|---|
OS(Operating System, 운영체제) (0) | 2023.11.30 |
OOP(Object Oriented Programming, 객체 지향 프로그래밍) (0) | 2023.11.30 |
알고리즘 (0) | 2023.11.18 |
자료구조 (0) | 2023.11.17 |