[CS/면접준비] 네트워크

bye9·2021년 3월 18일
0

CS

목록 보기
3/10

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network

HTTP의 GET vs POST

클라이언트에서 서버로 요청할 때 사용하는 HTTP 메소드 방식

GET

  • 요청하는 데이터가 url에 key와 value가 결합된 쿼리 스트링 형태로 HTTP Request Message의 Header에 담겨 전송된다.

  • 전송할 수 있는 데이터의 크기가 제한적이다.

  • url에 전송하는 데이터가 노출되어 보안에 취약하다.

    	(예시 https://recordboy.github.io/login?id=user&pw=1234)

POST

  • 요청하는 데이터가 HTTP Request Message의 Body 부분에 담겨 전송된다.
  • 대용량 데이터를 전송할 수 있다.
  • 전송하는 데이터가 노출되지 않아 GET방식에 비해 보안성이 높다. (하지만 암호화 필요)

참고
https://velog.io/@recordboy/GET%EA%B3%BC-POST-%EC%B0%A8%EC%9D%B4


TCP 3-way Handshake

클라이언트와 서버가 통신을 하기전 정확한 전송을 보장하기 위해 컴퓨터간 세션을 수립하는 과정으로서 TCP 프로토콜에서 신뢰성을 보장하기 위해 사용됩니다.

  1. 클라이언트는 서버에 접속을 요청하는 SYN패킷을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT상태가 된다.

  2. 서버는 요청에 대한 응답 ACK와 SYN패킷을 보내고 클라이언트가 ACK로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED상태가 된다.

  3. 클라이언트는 서버에 ACK를 보내고, 이후부터 연결이 이루어지고 데이터가 오간다. 이때 서버는 ESTABLISHED 상태다.

참고
https://ciscoking.tistory.com/4
https://djvaspirit.tistory.com/23
https://velog.io/@ss-won/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCP-3-way-handshake


TCP vs UDP

네트워크 전송 계층에서 데이터 전송을 위해 사용하는 프로토콜

TCP(Transmission Control Protocol)

인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

  • IP가 데이터의 배달을 처리한다면 TCP는 *패킷을 추적 및 관리하게 된다.
  • 연결형 서비스로 높은 신뢰성을 보장한다.
  • 3-way handshaking을 통해 연결을 설정하고, 4-way handshaking을 통해 해제한다.
  • 흐름 제어 및 혼잡 제어
  • UDP보다 속도가 느리다.
  • 모든 TCP 연결은 전이중(full-duplex), 점대점(point to point)방식
    전이중: 전송이 양방향으로 동시에 일어날 수 있음을 의미
    점대점: 각 연결이 정확히 2개의 종단점을 가지고 있음을 의미
  • 멀티캐스팅, 브로드캐스팅을 지원하지 않는다.
  • 연속성보다 신뢰성있는 전송이 중요할 때 사용 ex) 파일 전송

UDP(User Datagram Protocol)

데이터를 데이터그램(독립적인 관계를 지니는 패킷) 단위로 처리하는 프로토콜

  • 비연결형 서비스로 신뢰성이 낮다.
  • 정보를 주고 받을 때 정보를 보내거나 받는다는 절차를 거치지 않는다.
  • TCP보다 속도가 빠르다.
  • 신뢰성보다 연속성이 중요한 서비스에 사용 ex) 실시간 스트리밍 서비스

*패킷: 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 합니다.

참고
https://mangkyu.tistory.com/15


OSI 7계층

네트워크 통신의 7단계 과정

7 계층(응용 계층): 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층
6 계층(표현 계층): 데이터의 형식(Format)을 정의하는 계층
5 계층(세션 계층): 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
4 계층(전송 계층): 최종 수신 프로세스로 데이터의 전송을 담당하는 계층
3 계층(네트워크 계층): 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
2 계층(데이터링크 계층): 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
1 계층(물리 계층): 데이터를 전기 신호로 바꾸어주는 계층


HTTP vs HTTPS

HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 비밀번호나 주민번호 등을 주고 받으면 제3자에 의해 조회될 수 있습니다. 이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다.

HTTP(Hypertext Transfer Protocol)

서로 다른 시스템들 사이에서 데이터를 주고 받기 위한 프로토콜
-웹 서핑을 할 때 서버에서 여러분의 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용

HTTPS( // Secure)

일반 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다.
SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결

참고
http://blog.wishket.com/http-vs-https-%EC%B0%A8%EC%9D%B4-%EC%95%8C%EB%A9%B4-%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%9D%98-%EB%A0%88%EB%B2%A8%EC%9D%B4-%EB%B3%B4%EC%9D%B8%EB%8B%A4/


웹 동작 방식

  1. 사용자가 브라우저에 URL을 입력
  2. 브라우저는 DNS를 통해 서버의 진짜 주소를 찾음
  3. HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성함
  4. TCP/IP 연결을 통해 HTTP요청이 서버로 전송됨
  5. 서버는 HTTP 프로토콜을 활용해 HTTP 응답 메세지를 생성함
  6. TCP/IP 연결을 통해 요청한 컴퓨터로 전송
  7. 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨

0개의 댓글