리액트 면접을 위한 준비 #2

HR.lee·2022년 4월 13일
0

면접준비

목록 보기
2/4

웹 프로토콜과 http, https

https://joshua1988.github.io/web-development/web-protocols/
https://velog.io/@sdc337dc/웹-개념-Http-통신

웹 Protocol

웹 통신이란 인터넷 상에서의 통신을 말한다. 통신으로 많은 정보들을 주고받기에 엄격한 규약이 존재한다. 이 것을 웹 Protocol이라고 한다.

일반적인 프로토콜

Http : Hyper Text Transer Protocol
Https : secure Hyper Text Transer Protocol

TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜

FTP : File Transfer Protocol

파일 전송 프로토콜

Telnet : Terminal Network
SSH : Secure Shell

보안된 소켓 통신을 위한 프로토콜

SMTP : Simple Mail Transfer Protocol

기타

https://coding-factory.tistory.com/614
https://velog.io/@hidaehyunlee/TCP-와-UDP-의-차이

TCP/UDP가 무엇인가 : Transmission Control Protocol/User Datagram Protocol

IP : Internet Protocol

TCP : Transmission Control Protocol의 약자. 상호 통신이 이루어지기 때문에 신뢰성이 요구되는 애플리케이션에서는 TCP를 사용한다.

TCP는 통신할 컴퓨터끼리 ‘보냈습니다’, ‘도착했습니다’라고 서로 확인 메시지를 보내면서 데이터를 주고받음으로써 통신의 신뢰성을 높인다. 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스에 사용.

연결지향형, 바이트 스트림을 통한 연결, 혼잡제어/흐름제어, 순서보장-상대적으로 느림, 신뢰성 있는 데이터 전송(안정적), 세그먼트 TCP 패킷, HTTP/Email/File-transfer

UDP : User Datagram Protocol의 약자. 일방적이어서 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서 사용한다.

UDP는 데이터를 보내면 그것으로 끝이므로 신뢰성은 없지만 확인 응답과 같은 절차를 생략할 수 있으므로 통신의 신속성을 높일 수 있다. VoIP(Voice over IP)나 시간 동기, 이름 해결 등과 같이 무엇보다 속도를 필요로 하는 서비스는 UDP를 사용.

비연결지향형, 메세지 스트림을 통한 연결, 혼잡제어나 흐름제어 지원 X, 순서 보장되지 않음/상대적으로 빠름, 데이터 전송 보장 X, 데이터그램 UDP패킷, 도메인/실시간 동영상 서비스.

https://sleepyeyes.tistory.com/4

3 Way-Handshake란 무엇인가

3 Way-Handshake :
TCP에서 통신을 하는 장치간에 서로 연결이 잘 되어있는지 확인하는 과정, 방법

SYN : synchronize sequence numbers (랜덤넘버)
ACK : acknowledgements (랜덤넘버에 1을 더한등의 답장넘버)

[STEP 1]
A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태 가 되는 것이다.

[STEP 2]
이때 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. (Closed :닫힌상태) B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.

[STEP 3]
A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.

3way handshaking의 취약점을 이용해 서버를 공격 하는 방법

이 있는데 이를 SYN Flooding 이라한다.
3way handshaking 과정중 서버는 2단계 에서 (클라이언트로 부터 요청을받고 응답을 하고난후 다시 클라이언트의 응답을 기다리는 상태) 이 연결을 메모리 공간인 백로그큐(Backlog Queue) 에 저장을 하고 클라이언트의 응답 즉 3단계를 기다리게 되고 일정 시간 (default 로 UNIX/LINUX : 60초 , Windows : 256초 , Apache : 300 초이며 수정 가능) 동안 응답이 안오면 연결을 초기화한다.
바로 이 점을 이용한 공격법이다.
악의적인 공격자가 실제로 존재하지 않는 클라이언트IP로 응답이 없는 연결을 초기화 하기전에 또 새로운 연결 즉 1단계 요청만 무수히 많이 보내어 백로그 큐를 포화 상태로 만들어 다른 사용자로 부터 더이상에 연결 요청을 못 받게 하는 공격 방법이다.
대응책으로는 연결 타이머 시간을 짧게 하거나 백로그 큐 사이즈를 늘리는법, 정해진 시간동안 들어오는 연결 요구의 수를 제한하는법, 쿠키(cookie)라는 것을 이용해서 전체 연결이 설정되기 전까지는 자원의 할당을 연기하는 법이 있다.

HTTP vs HTTPS

https://blog.wishket.com/http-vs-https-차이-알면-사이트의-레벨이-보인다/

‘HTTP vs HTTPS 차이’는 바로 SSL 인증서입니다. 사실 HTTPS는 쉽게 말해서 HTTP 프로토콜에 보안 기능을 추가한 것이라고 말할 수 있는데요. 보안 기능은 생각보다 매우 중요합니다. 특히 신용카드 정보나 비밀번호 등 사용자들의 민감한 정보들을 다루는 웹사이트에서라면 더욱 그렇죠.
SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화하는데, 쉽게 말해서 데이터를 암호로 바꾼다고 생각하면 쉽습니다. 이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없습니다. 그 외에도 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지합니다. TSL은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고, 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공하고 있습니다.

HTTP vs HTTPS 차이 그 두번째는 SEO 품질에 있습니다. 만약 여러분의 웹사이트에 전자상거래 기능도 없고 방문자들의 민감한 정보를 다루지도 않는다면, HTTPS로 전환할 필요성이 크게 느껴지지 않을 겁니다. 하지만 HTTPS의 장점은 보안상 우위에만 있는 것이 아닙니다. 사실 HTTPS로 전환하게 되면 검색엔진 최적화(SEO)에 있어서도 큰 혜택을 볼 수 있는데요. 이는 앞서 말했듯이 구글이 HTTPS 웹사이트에 가산점을 주는 이유 때문이기도 하지만, 사용자들이 결국에는 가장 안전하다고 생각하는 사이트를 더 많이 방문하기 때문이기도 합니다.

또한 가속화된 모바일 페이지(AMP, Accelerated Mobile Pages)를 만들고 싶을 때도 HTTPS 프로토콜을 사용해만 합니다. 여기서 AMP란 모바일 기기에서 훨씬 빠르게 콘텐츠를 로딩 하기 위한 방법으로 구글이 만든 것입니다. AMP는 HTML에서 불필요한 부분을 없앤 것이라고 볼 수 있습니다. 구글의 SERP(검색 결과 페이지)를 보면 스마트폰과 태블릿의 사용자들이 모바일에서 사용하기 편하도록 AMP 콘텐츠들이 두드러져 보이는 것을 볼 수 있습니다
모바일 친화적인 웹사이트를 만드는 것과 모바일 검색순위 및 지역에 SEO를 증가시키는 것이 점점 더 중요해지고 있는 요즘, HTTP를 HTTPS로 전환하는 것이 필수라고 볼 수 있습니다.

HTTPS

https://rachel-kwak.github.io/2021/03/08/HTTPS.html

HTTP에 S(Secure Socket)가 추가된 HTTPS
HyperText Transfer Protocol의 약자다.

하이퍼텍스트를 전송하기 위해 사용되는 웹 프로토콜인 HTTP는 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. 이런 보안 취약점을 해결하기 위해 Secure Socket이 추가된게 HTTPS다.

브라우저에서 주소창에 url 입력시 어떤일이 일어나는가

  1. 브라우저 주소창에 URL을 입력한다.
  2. 브라우저가 입력된 URL의 IP주소를 찾기 위해 캐시에서 DNS 기록을 확인한다.
  3. 만약 요청한 URL이 캐시에 없다면 ISP의 DNS 서버가 DNS 쿼리로 URL을 호스팅하는 서버의 IP 주소를 찾는다.
  4. 브라우저가 해당 서버와 TCP 연결을 시작한다.
  5. 브라우저가 웹서버에 HTTP 요청을 보낸다.
  6. 서버가 요청을 처리하고 응답을 보낸다.
  7. 서버가 HTTP 응답을 보낸다.
  8. 브라우저가 HTML 컨텐츠를 보여준다.

자주 쓰이는 HTTP 메소드 Get / Post 정리

https://velog.io/@songyouhyun/Get과-Post의-차이를-아시나요

Get과 Post는 Http method 중 가장 많이 쓰이는 method

Get 특징
GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다.
파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안 됩니다.
GET 요청은 브라우저 기록에 남습니다.
GET 요청을 북마크에 추가할 수 있습니다.
GET 요청에는 데이터 길이에 대한 제한이 있습니다.
Get 요청은 성공시, 200(Ok) HTTP 응답 코드를 XML, JSON뿐만 아니라 여러 데이터(html, txt등..), 여러 형식의 데이터와 함께 반환합니다.
GET 요청은 idempotent합니다.

Post 특징
POST 요청은 캐시되지 않습니다.
POST 요청은 브라우저 기록에 남아 있지 않습니다.
POST 요청을 북마크에 추가할 수 없습니다.
POST 요청에는 데이터 길이에 대한 제한이 없습니다.
Post 요청 중 자원 생성은 201(Created) HTTP 응답 코드를 반환합니다.
Post 요청은 idempotent하지 않습니다.

idempotent : 멱등성(冪等性), 수학이나 전산학에서 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.

GET은 idempotent한 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 Idempotent하기 때문에 주로 조회를 할 때에 사용

POST는 Non-idempotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있음. 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용

POST 요청은 body안에 담아보내서 좀더 보안성이 좋긴 하지만, 크롬의 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 함

profile
It's an adventure time!

0개의 댓글