Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 딥러닝
- 정리
- HTTP
- 깃허브 로그인
- 팀플회고
- 머신러닝
- 데베
- 자바
- 백준 5525번
- 네트워크
- 리액트 네이티브 시작하기
- 백준
- SQL
- 문자열
- React Native
- 모두의네트워크
- 데이터베이스
- 모두의 네트워크
- 모두를위한딥러닝
- 백준 4358 자바
- 모두를 위한 딥러닝
- 스터디
- 깃 연동
- 리액트 네이티브 프로젝트 생성
- 리액트 네이티브
- 백준 4949번
- 지네릭스
- 깃허브 토큰 인증
- 백준 4358번
- 깃 터미널 연동
Archives
- Today
- Total
솜이의 데브로그
[CS] 네트워크 본문
1. TCP와 UDP의 차이에 대해서 설명해 주세요.
- TCP와 UDP는 네트워크 계층 준 전송 계층에서 사용하는 프로토콜입니다.
TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하고, 그렇기에 높은 신뢰성을 보장하지만 속도가 비교적 느리다는 단점이 있습니다.
UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있습니다. 하지만 수신 여부를 확인하지 않기 때문에 속도가 빠릅니다.
TCP
- 인터넷 상에서 데이터를 메세지의 형태 (segment 단위)로 보내기 위해 IP와 함께 사용하는 프로토콜이다.
- 연결형 서비스로, 가상 회선 방식을 제공한다.
- 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking을 통해 연결을 해제한다.
- 흐름제어 및 혼잡제어를 제공한다.
- 높은 신뢰성을 제공한다.
- UDP 보다 속도가 느리다.
- 전이중 (Full-Duplex), 점대점(Point to Point) 방식이다.
- 연속성보다 신뢰성이 있는 전송이 중요할 때 사용된다.
UDP
- 데이터를 데이터그램 (datagram) 단위로 처리하는 프로토콜이다.
- 비연결형 서비스로 데이터그램 방식을 제공한다.
- 연결을 위해 할당되는 논리적인 경로가 없으며, 각각의 패킷은 다른 경로로 전송되고, 독립적인 관계를 지니게 된다.
- 정보를 주고 받을 때 신호절차를 거치지 않는다.
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 신뢰성이 낮다.
- TCP보다 속도가 빠르다.
- 신뢰성보다는 연속성이 중요한 서비스, (실시간 서비스 streaming) 등에 사용된다.
2. HTTP와 HTTPS 의 차이는 무엇인가요?
HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 비밀번호나 주민번호 등을 주고 받으면 제삼자에 의해 조회될 수 있습니다.
HTTPS는 자신의 공개키를 갖는 인증서를 발급하여 보내는 메시지를 공개키로 암호화하도록 합니다.
공개키로 암호화된 메시지는 개인키를 가지고 있어야만 복호화가 가능하기 때문에, 기업을 제외한 누구도 원본 데이터를 얻을 수 없습니다.
HTTP 프로토콜
- HyperText Transfer Protocol
- 웹 상에서 클라이언트와 서버 간에 요청/응답으로 정보를 주고 받을 수 있는 프로토콜
- 주로 HTML 문서를 주고 받는데 쓰인다.
- TCP와 UDP를 사용하며, 80번 포트를 사용한다.
- 비연결 : 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊긴다.
- 무상태 : 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.
HTTPS 프로토콜
- HyperText Transfer Protocol over Secure Socket Layer
- 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전의 프로토콜
- HTTPS의 기본 TCP/IP 포트로 443번 포트를 사용한다.
- 소켓 통신에서 일반 텍스트를 이용하는 대신에, 웹 상에서 정보를 암호화하는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.
- TLS(Transport Layer Security) 프로토콜은 SSL (Secure Socket Layer) 프로토콜에서 발전한 것이다.
- 두 프로토콜의 주요 목표는 기밀성(사생활 보호), 데이터 무결성, ID 및 디지털 인증서를 사용한 인증을 제공하는 것이다.
- 따라서 데이터의 적절한 보호를 보장한다.
3. HTTP GET과 POST의 차이는 무엇인가요?
- GET 메서드
- 정보를 조회하기 위한 메서드
- 서버에서 어떤 데이터를 가져와서 보여주기 위한 용도
- 가져오는 것 (Select)
- URL에 요청 정보를 붙여서 전송한다.
- URL에 요청 정보가 이어붙기 때문에 길이 제한이 있어서 대용량의 데이터를 전송하기 어렵다.
- 요청 정보를 사용자가 쉽게 눈으로 확인할 수 있다.
- 따라서 POST 방식보다 보안상 취약하다.
- HTTP 패킷의 Body는 비어있는 상태로 전송한다.
- Body의 데이터 타입을 표현하는 ‘Content-Type’ 필드도 HTTP Request Header에 들어가지 않는다.
- POST 방식보다 빠르다.
- 캐싱을 사용할 수 있어, GET 요청과 그에 대한 응답이 브라우저에 의해 캐쉬된다.
- POST 메서드
- 서버의 값이나 상태를 바꾸기 위한 용도의 메서드
- 수행하는 것 (Insert, Update, Delete)
- 요청 정보를 HTTP 패킷의 Body 안에 숨겨서 서버로 전송한다.
- Body 안에 숨겨서 요청 정보를 전송하기 때문에 대용량의 데이터를 전송하기에 적합하다.
- 클라이언트 쪽에서 데이터를 인코딩하여 서버로 전송하고, 이를 받은 서버 쪽이 헤당 데이터를 디코딩한다.
- GET 방식보다 보안상 안전하다.
4. HTTP Method 종류 및 역할에 대해 말해주세요.
- GET : 클라이언트가 서버에게 URL에 해당하는 자료의 전송을 요청.
- HEAD : GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청.
- POST : 클라이언트가 서버에서 처리할 수 있는 자료를 보낸다. (서버의 값이나 상태를 바꾸기 위한 용도의 메서드)
- PATCH : 클라이언트가 서버에게 지정한 URL의 데이터를 부분적으로 수정할 것을 요청한다.
- PUT : 클라이언트가 서버에게 지정한 URL에 지정한 데이터를 저장할 것을 요청한다. (전체 저장)
- DELETE : 클라이언트가 서버에게 지정한 URL의 정보를 제거할 것을 요청한다.
- TRACE : 클라이언트가 서버에게 송신한 요청의 내용을 반환해 줄 것을 요청한다.
- CONNECT : 클라이언트가 특정 종류의 프록시 서버에게 연결을 요청한다.
- OPTIONS : 해당 URL에서 지원하는 요청 메시지의 목록을 요청한다.
5. 쿠키와 세션에 대해서 설명해 주세요.
쿠키
- 개념
- 클라이언트 로컬에 저장되는 키와 값이 들어있는 파일.
- 이름, 값, 유효시간, 경로 등을 포함하고 있다.
- 클라이언트의 상태 정보를 브라우저에 저장하여 참조한다.
- 구성 요소
- 쿠키의 이름(name)
- 쿠키의 값(value)
- 쿠키의 만료시간 (Expires)
- 쿠키를 전송할 도메인 이름(Domain)
- 쿠키를 전송할 경로(Path)
- 보안 연결 여부(Path)
- HttpOnly 여부(HttpOnly)
- 동작 방식
- 웹 브라우저가 서버에 요청
- 상태를 유지하고 싶은 값을 쿠키(cookie)로 생성
- 서버가 응답할 때 HTTP 헤더에 쿠키를 포함해서 전송
- 전달받은 쿠키는 웹브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송
- 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답
세션
- 개념
- 일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술.
- 즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태이다.
- 동작 방식
- 웹 브라우저가 서버에 요청
- 서버가 해당 웹브라우저(클라이언트)에 유일한 ID(Session ID)를 부여함
- 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함해서 전송, 쿠키에 Session ID를 JSESSIONID라는 이름으로 저장
- 웹브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담여깄는 쿠키를 HTTP 헤더에 넣어서 전송
- 서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답.
6. 흐름제어기법중 슬라이딩 윈도우 방식에대해 설명하세요.
Sliding Window (Go Back N ARQ)
- 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법입니다.
- 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는 대로 이 윈도우를 옆으로 옮김으로써 그 다음 패킷들을 전송합니다.
7. 3-way handshaking이란?
3-way handshaking 이란,
- TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- 즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.
단계
- A→B : SYN
- 접속 요청 프로세스 A가 연결 요청 메시지를 전송
- 송신자가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- B→A : SYN + ACK
- 접속 요청을 받은 프로세스 B가 요청을 수락했으며, 접속 요청 프로세스인 A도 포트를 열어달라는 메시지 전송
- 수신자는 Acknowledgement Number 필드를 (Sequence Number +1)로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- A→B : ACK
- 마지막으로 접속 요청 프로세스 A가 수락 확인을 보내 연결을 맺음
- 이 때, 전송할 데이터가 있으면 이 단계에서 데이터를 전송할 수 있다.
8. DNS가 무엇인가요?
DNS는 Domain Name System의 약자로, IP 주소를 모두 기억하는 것이 어렵기 때문에 DNS Server에 수많은 IP 주소와 도메인이 저장되어 있습니다.
DNS Server
- IP 주소와 Domain 이름을 기억하는 기능과 Client가 이름을 물어보면 IP를 알려주는 기능을 갖고 있다.
9. 흐름제어와 혼잡제어에 대해 설명하세요.
- 흐름제어
- 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것.
- 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보낼 때 수신하는 곳에서 문제가 일어나는 것을 막는다.
- 혼잡제어
- 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
- 정보의 소통량이 과다하다면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.
10. 유니캐스트, 멀티캐스트, 브로드캐스트란?
Unicast
- 1:1 통신을 말하며 LAN 통신에서 송신자의 MAC와 수신자의 MAC 주소를 알 때 메세지를 전달한다.
- 한개의 MAC 주소를 사용하여 CPU 성능에는 문제를 주지 않는다.
- 개인적이거나 고유한 리소스가 필요한 모든 네트워크 프로세스에서 사용될 수 있다.
Multicast
- 한 번의 송신으로 메세지나 정보를 목표한 여러 컴퓨터에 전송하는 것을 말한다. 1:N 전송 방법이다.
- 수신자를 그룹화하여 해당 그룹에 해당하는 수신지만 유니캐스트 + 브로드캐스트 한다.
Broadcast
- 정보의 전달 과정에서 송신자는 누군지 확실히 알고 있으나 수신자를 특정하지 않았을 때, 네트워크에 있는 모든 서버에게 정보를 알려야 할 때, 라우터끼리 정보를 교환하거나 새로운 라우터를 찾을때 사용한다.
- Flooding 개념
- 브로드캐스팅용 주소가 따로 정해져있고, 수신 받는 목적지는 이 주소가 오면 패킷을 자신의 CPU로 전송해서 CPU가 패킷을 처리한다.
'CS > etc' 카테고리의 다른 글
[cs] 운영체제 (0) | 2022.05.05 |
---|---|
[CS] 데이터베이스 (0) | 2022.04.28 |
[CS] 알고리즘 (0) | 2022.04.07 |
[CS] 개발 상식 (0) | 2022.03.31 |