- 웹 프로토콜에 대해 설명해주세요. (131번)
: 웹 기반 서비스에서 데이터를 주고받기 위해 사용되는 통신 규약
서로 정보를 주고 받을 때사용되는 규칙과 규약의 모음을 정하는 것
클라이언트와 서버 간의 상호작용을 정의하며, 웹에서 정보를 안전하게 교환할 수 있도록 함
1. HTTP (Hypertext Transfer Protocol)
웹에서 가장 기본적인 통신 프로토콜로, 웹 브라우저(클라이언트)와 웹 서버 간의 문서(HTML, 이미지, 비디오 등)를 주고받는 데 사용됨
상태를 유지하지 않는 비연결성 프로토콜이며, 각 트랜잭션을 별개의 이벤트로 처리함
2. HTTPS (Hypertext Transfer Protocol Secure)
HTTP에 SSL/TLS 프로토콜을 결합한 것으로, 클라이언트와 서버 간의 통신이 암호화되어 데이터의 보안이 강화됨
3. FTP (File Transfer Protocol)
파일을 한 컴퓨터에서 다른 컴퓨터로 안전하게 전송하기 위한 프로토콜
4. WebSocket
HTTP와 달리, 클라이언트와 서버 간에 지속적인 연결을 유지하며, 양방향 통신
5. REST (Representational State Transfer)
웹 서비스를 구축하기 위한 아키텍처 스타일로, HTTP 프로토콜 위에서 동작
RESTful 웹 서비스는 CRUD(Create, Read, Update, Delete) 작업을 수행하기 위해 HTTP 메서드(POST, GET, PUT, DELETE 등)를 사용
6. SOAP (Simple Object Access Protocol)
웹 서비스 상호작용에 사용되는 통신 프로토콜로, XML 기반 메시지 형식을 사용하여 애플리케이션 컴포넌트가 서로 메시지를 주고받을 수 있게 함
7. SMTP(Simple Mail Transfer Protocol)
이메일을 보내는 데 사용됨. 이메일 클라이언트가 이메일 서버로 메일을 전송하는 프로토콜
8. POP3(Post Office Protocol) & IMAP(Internet Access Message Protocol) : 이메일 클라이언트가 서버로부터 이메일을 가져오는데 사용되는 프로토콜
9. DNS(Domain Name System)
도메인 이름을 IP 주소로 변환하는데 사용됨.
- ⭐ HTTP에 대해 설명해주세요. (132번)
: HyperText Transfer Protocol
웹에서 데이터를 주고받기 위한 프로토콜로, 클라이언트와 서버 간의 통신을 담당함
주로 HTML과 같은 HyperText문서를 주고 받기 위해 만들어졌고, 최근에는 HTML뿐 아니라 모든 웹 관련 API통신에 이용하고 있는 통신 프로토콜
비연결성(Connectionless)과 무상태성(Stateless)의 특징을 가짐
- 비연결성 : 처음 연결을 맺은 후 요청(Request)과 한번의 응답(Response)이후 연결이 종료
매 요청마다 다시 연결을 맺음. 매번 연결을 맺어 느려지는 것을 보완하기 위해 KeepAlive와 같은 속성을 활용할 수 있음
- 무상태성(Stateless): 프로토콜에서 Client의 상태를 기억하지 않음
Client의 상태를 보관하기 위해 쿠키나 세션, JWT토큰 등을 이용하여 Client의 상태를 유지
HTTP 요청 방식에는 GET, POST, PUT, PATCH, DELETE가 있음
* HTTP 응답 상태 코드
1xx (Informational): 요청이 수신되었으며 처리 중입니다.
2xx (Success): 요청이 성공적으로 수행되었습니다.
3xx (Redirection): 리소스가 다른 위치에 있으므로 추가 동작이 필요합니다.
4xx (Client Error): 클라이언트 측의 오류로 인해 요청이 실패했습니다.
5xx (Server Error): 서버 측의 오류로 인해 요청이 실패했습니다.
- ⭐ HTTP의 GET, POST를 비교 설명해주세요. (133번)
* GET
리소스의 조회에 사용(서버에서 데이터를 가져오기 위한 목적으로 사용)
데이터를 요청하고 받아오는 데에 사용되며, 서버의 상태를 변경하지 않음
데이터를 URL의 쿼리 매개변수로 전송
멱등성이 있는 메서드, 동일한 요청을 여러 번 보내더라도 동일한 결과를 보장
GET은 응답이 캐싱될 수 있어, 동일한 요청에 대한 응답을 캐시에서 가져오는 등의 최적화가 가능
* POST
POST는 리소스를 생성 또는 수정하기 위해 사용(서버의 상태를 변경할 때 사용)
데이터를 요청 본문에 담아 서버로 전송
데이터가 URL에 노출되지 않으므로, GET에 비해 보안적으로 우수
일반적으로 멱등성이 없음, 동일한 요청을 여러 번 보내면 다른 결과를 반환할 수 있음
POST는 응답이 캐싱되지 않음, 각각의 요청은 서버에 의해 독립적으로 처리
- HTTP의 PUT, PATCH를 비교 설명해주세요. (134번)
* PUT
리소스를 업데이트하거나 생성하는 데 사용
리소스의 전체 표현을 사용하여 업데이트
클라이언트가 리소스를 식별하고 해당 리소스의 전체 표현을 제공하여 업데이트합
멱등성이 있는 메서드, 동일한 요청을 여러 번 보내더라도 동일한 결과를 보장
* PATCH
리소스의 일부를 업데이트하거나 수정하는 데 사용
클라이언트가 리소스의 일부분만 제공하여 서버에게 업데이트하고자 하는 변경 사항을 알림
대량의 데이터를 업데이트할 때 효과적
일반적으로 멱등성을 가질 수 있지만 보장되지 않음
- ⭐ HTTP와 HTTPS의 차이점에 대해 설명해주세요. (135번)
* HTTP(Hyper Text Transfer Protocol)
서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
암호화가 되지 않은 평문 데이터를 전송하여 보안에 취약
80번 포트를 사용
* HTTPS(Hyper Text Transfer Protocol Secure)
HTTP에 데이터 암호화가 추가된 프로토콜
SSL(또는 TLS) 인증서를 사용하여 보안이 강화된 HTTP
일반 HTTP 요청 및 응답을 암호화하므로 더 안전한 보안용 프로토콜
네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원
HTTP와 다르게 443번 포트를 사용
* HTTP와 HTTPS의 차이
1. 보안
HTTP: 암호화되지 않은 평문-> 보안성이 낮음
HTTPS: HTTP에 SSL 또는 TLS 프로토콜을 추가하여 암호화 -> 보안성이 높음
2. 포트번호
HTTP: 80번 포트 default
HTTPS: 443번 포트 default
- HTTPS의 동작 방식에 대해 설명해주세요. (136번)
HTTP와 TCP 사이에 TLS라는 보안 레이어를 거친 후에 HTTP 통신 함
클라이언트와 서버가 TCP에서 3-way handshake로 연결 만들고 나면 TLS가 작동하기 시작
1. 클라이언트가 서버에 접속
2. ClientHello 메세지 : 클라이언트가 서버에게 보내는 첫 메시지. 자신이 사용한 랜덤데이터 및 사용가능한 암호화 & 압축 방식 목록 등을 서버에게 전달함
3. ServerHello 메세지 : 서버가 클라이언트에게 보내는 메시지. 서버 자신이 만든 랜덤데이터 , 세션 ID , 암호화 & 압축 방식 전달함.
4. 인증서 검증 : 서버가 클라이언트에게 자신의 인증서를 보내고 클라이언트는 이를 검증함. CA의 전자서명 , 그리고 서버의 랜덤 생성 데이터, 서버의 공개키 등이 들어간다
5. Server Key Exchange 메세지 : 인증서 안에 서버의 공개키가 없는 경우 보내는 메시지.
6. ServerHelloDone 메세지 : Certificate까지 전송 했으면 이 메시지를 클라이언트에게 전달함. 서버가 클라이언트에게 초기 핸드셰이크 메시지를 모두 전송했음을 알려주는 것
7. Client Key Exchange 메세지 : 클라이언트는 서버에게 pre-master-secret을 전달함, 클라이언트와 서버는 모두 이 pre-master-secret 및 이전에 교환된 랜덤 데이터를 사용하여 "master secret"을 생성
(* pre-master-secret : 세션 단계에서 실제로 데이터를 주고 받을 때 데이터들을 암호화 하기 위해 사용되는 것)
8. Change Cipher Spec 메세지 : handshake에 의해 협상된 암호화 방식이 이제부터 적용됨을 알림. (나 이제 암호화해서 통신한다 라는 의미)
9. finished 메세지 : 핸드셰이크 프로세스의 완료를 검증하는 데 사용, 최종적으로 협상된 키를 사용하여 암호화되며, 수신자는 이전의 모든 핸드셰이크 메시지의 무결성을 검증하기 위해 내용을 검사
좀 더 쉽게)
1. 클라이언트가 서버에 접속
2. 서버는 클라이언트에게 인증서를 전송(이 인증서에는 공개키가 포함되어 있고, 이는 신뢰할 수 있는 제3자 기관에 의해 서명)
3. 클라이언트는 인증서의 유효성을 검증(인증서가 유효하면, 클라이언트는 공개키를 사용하여 랜덤 대칭 암호화키를 암호화하고 서버에게 전송)
4. 서버는 자신의 개인키를 사용하여 암호화된 대칭키를 복호화
5. 서버와 클라이언트는 이 대칭키를 사용하여 통신을 암호화하고, 데이터를 안전하게 교환
- ⭐ HTTP의 Status Code에 대해 설명해주세요. (137번)
: HTTP 상태 코드란, 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단함
* HTTP 응답 상태 코드
1xx (Informational): 조건부 응답, 요청이 수신되었으며 처리 중
2xx (Success): 요청이 성공적으로 수행됨
3xx (Redirection): 리다이렉션 완료, 요청 완료를 위해 추가 작업 조치가 필요함(리소스가 다른 위치에 있으므로 추가 동작이 필요)
4xx (Client Error): 요청 오류, 클라이언트 측의 오류(잘못된 문법 등)로 인해 서버가 요청을 처리할 수 없음
5xx (Server Error): 서버 오류, 서버 측의 오류로 인해 서버가 정상 요청을 처리하지 못함
- TCP가 신뢰성을 보장하는 방법에 대해 설명해주세요. (138번)
1. 순서보장
- 데이터 패킷에 Sequence Number를 부여하여 수신자가 패킷을 올바른 순서대로 재조립 할 수 있도록 함.
2. 오류 검출 및 재전송
- 체크섬을 이용하여 데이터의 오류를 검출
- 체크섬은 송신자에서 계산되어 패킷 헤더에 포함되어 전송되며 수신자는 체크섬을 다시 계산하여 원래의 체크섬과 비교
(* 체크섬: 오류 검사를 위한 간단한 방법, 데이터의 무결성을 확인하는 데 사용됨
데이터 패킷이나 파일의 내용을 일련의 숫자 값으로 변환, 이러한 숫자들을 합치거나 다른 방식으로 결합하여 단일 숫자를 생성 -> 이 숫자가 체크섬, 이 체크섬은 원본 데이터와 함께 전송되거나 저장)
3. 흐름제어
- TCP는 데이터를 보내는 속도를 제어하여 수신자의 버퍼가 넘치지 않도록 함
4. 혼잡제어
- 네트워크의 혼잡 상태를 관리하여 패킷의 손실을 최소화
- TCP의 3-Way-Handshake와 4-Way-Handshake에 대해 설명해주세요. (139번)
3-Way Handshake: TCP 연결 설정 과정
1. Client -> Server (SYN) : 클라이언트는 서버에 SYN(synchronize) 패킷을 보내 연결을 요청
2. Server -> Client (SYN-ACK) : 서버는 SYN을 받고, 클라이언트에게 ACK(acknowledgement)와 자신의 SYN 패킷을 돌려보냄
3. Client -> Server (ACK) : 클라이언트는 서버의 SYN-ACK를 받고, ACK을 서버에게 다시 보냄 -> 이 시점에서 연결이 설정
4-Way Handshake: TCP 연결 종료 과정
1. Client -> Server (FIN) : 종료하려는 클라이언트는 서버에 FIN(finish) 패킷을 보냄
2. Server -> Client (ACK) : 서버는 클라이언트의 FIN 패킷을 받고, 확인 메시지로 ACK 패킷을 보냄 -> 이 시점에서 클라이언트에서 서버로의 연결이 해제
3. Server -> Client (FIN) : 서버가 모든 데이터를 클라이언트에게 보낸 후, 자신의 FIN 패킷을 클라이언트에게 보냄
4. Client -> Server (ACK) : 클라이언트는 FIN을 받고, 확인 메시지로 ACK을 보냄 -> 이 ACK을 받은 후 일정 시간이 지나면 서버는 연결을 종료함
- TCP와 UDP를 비교 설명해주세요. (140번)
* TCP 특징
1. 연결 지향 방식으로 패킷 교환 방식을 사용
2. 3-way handshaking과정을 통해 연결을 설정하고, 4-way handshaking을 통해 해제
3. 흐름 제어 및 혼잡 제어
4. 높은 신뢰성을 보장
5. 전이중(Full-Duplex), 점대점(Point to Point) 방식
6. 느린 속도
* UDP 특징
1. 비연결형 서비스로 데이터그램 방식을 제공
2. 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않음
3. UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
4. 속도가 빠름
5. 낮은 신뢰성
* TCP와 UDP의 차이
1. 연결방식
TCP: 연결 지향성
통신하기 전에 먼저 연결을 설정하고, 통신이 끝나면 연결을 해제
데이터의 정확한 전송을 보장
UDP: 비연결성, 데이터그램 방식
연결 설정 및 해제 단계가 없고, 데이터를 전송할 때마다 독립적인 패킷으로 전송됨
2. 신뢰성
TCP: 높음, 데이터의 정확한 전송을 보장하기 위해 재전송 및 에러 확인 기능을 제공(수신 여부 확인)
UDP: 낮음, 에러 검출은 제공되지만, 재전송은 수행되지 않음(수신 여부 확인 하지 않음)
3. 통신 방식
TCP: 양방향 통신을 지원하며, 데이터의 전송 순서가 보장
UDP: 단방향 또는 양방향 통신이 가능하지만, 순서가 보장되지 않음
4. 속도:
TCP: 신뢰성을 위해 추가된 기능으로 인해 속도가 상대적으로 느림
UDP: 속도가 빠름
5. 헤더 사이즈
TCP: 헤더 크기가 큼(연결 관리를 위한 정보가 포함)
UDP: 헤더 크기가 작음 (간단한 정보만을 포함)
6. 사용
TCP: 신뢰성이 중요한 응용 프로그램 (ex. 웹 브라우징, 이메일, 파일 전송 등)
UDP: 신속한 데이터 전송이 중요한 응용 프로그램 (ex. 음성 통화, 동영상 스트리밍, 온라인 게임 등)
참고) https://www.youtube.com/watch?v=ikDVGYp5dhg
'스터디 > 프론트 cs 스터디(23.08-23.11)' 카테고리의 다른 글
# 프론트엔드 예상 질문 - 2 (1) | 2023.11.01 |
---|---|
# 프론트엔드 예상 질문 - 1 (1) | 2023.10.30 |
# React 예상 질문 - 4 (0) | 2023.09.20 |
# React 관련 지식 - 3 (0) | 2023.09.12 |
# React 예상 질문 - 2 (0) | 2023.09.01 |