1. 웹 통신의 흐름
•
브라우저는 요청을 통해 Http Request Message를 만들고 OS에 전송을 요청한다
•
이 과정에서 DNS LookUp 과정을 거친다
◦
로컬 DNS 물어봄 → 루트 네임 서버 →TLD 서버 → 네임 서버
•
요청은 Protocol Stack을 통해 패킷에 담긴다
•
패킷에 제어 정보를 덧붙여 LAN Adapter에 전송하고 전기 신호로 변환한다.
•
패킷은 스위칭 허브 또는 각각의 라우터(인터넷 전송용 → 통신사용 → 고속)를 자나 목적지까지 흘러들어간다.
•
패킷은 목적지 LAN에 도달하고 방화벽이 패킷을 검사한 후 캐시 서버로 보내 Web Server까지 갈 필요가 있는지 검사
•
필요가 있다면 Web Server에 보내고 도착한 패킷을 Protocol stack이 추출하여 메시지를 복원하고 Application에 넘긴다
2. TCP / UDP 차이
•
TCP / UDP 둘 다 전송계층에 속한 프로토콜입니다.
•
이 둘의 차이는
•
TCP는 연결 지향성, 혼잡제어 흐름제어를하고 신뢰성이 보장됩니다. 하지만 UDP에 비해 느립니다.
•
UDP는 반대로 비연결 지향성이며 혼잡제어, 흐름제어를 지원하지 않고 신뢰성이 보장되지 않습니다. 하지만 TCP에 비해 빠르다는 장점이 있습니다.
3. TCP 3,4 way handshake
(1) TCP 3 way
•
클라이언트 쪽에서 연결설정(SYN) 신호를 보냅니다. (open, syn sent)
•
서버측에서는 연결설정(SYN) 신호와 수신 응답(ACK) 신호를 같이 보냅니다. (syn rcvd)
•
그러면 클랑리언트쪽에서도 수신 응답 (ACK) 신호를 보냅니다. (established) ← 이상태면 데이터를 상호간 송수신
(2) TCP 4 way
•
클라이언트 쪽에서 종료 의사(FIN)를 보냅니다.
•
서버 측에서 수신 응답 (ACK) 신호를 보냅니다.
•
서버 측에서 종료 의사( FIN)를 보냅니다.
•
클라이언트쪽에서 수신 응답 신호를 보냅니다.
•
서버측 상태가 close 됩니다.
4. HTTP와 HTTPS 차이
•
Http란 클라이언트가 요청 시 서버가 응답하는 단방향 통신입니다.
•
Http는 암호화 기능 없이 단순 text 형식으로 통신하는데요
•
이로 인해 중간에 제 3자가 볼 수 있다는 단점이 있으며
•
HTTP는 신뢰할 수 있는 사이트인지 확인이 불가합니다.
•
이를 해결하고자 HTTPS를 사용하는데요
•
HTTP는 HTTP에 암호화를 추가하여 제 3자가 중간에 정보를 볼 수 없고 클라이언트는 신뢰할 수 있는 사이트를 사용할 수 있습니다.
•
HTTP의 포트는 80번이며 HTTPS 포트는 443번 입니다.
5. GET과 POST 차이
•
Get 메소드는 리소스를 요청할 때 사용을 합니다.
•
쿼리스트링으로 리소스를 요청하며 캐싱이 됩니다.
•
또한 브라우저에 요청이 남아지게 되고 데이터 길이에 제한이 있고 멱등성이라는 특징을 가지고 있습니다.
•
반면 Post 메소드는 리소스를 생성할때 주로 사용합니다.
•
Http Body를 통해 리소스를 전달하며 GET 방식과 달리 캐싱되지 않으며 브라우저에도 요청이 남지 않습니다. 또한 데이터 길이의 제한이 없으며 멱등성이라는 특징도 가지고 있지 않습니다.
6. HTTP 메서드와 이것이 하는 역할
•
주로 사용하는 HTTP 메서드에는
•
GET, POST, PUT, PATCH가 있습니다.
•
GET은 주로 리소스를 요청할 때 사용하며 POST는 주로 리소스를 생성할 때 사용합니다.
•
PUT과 PATCH는 리소스를 변경할 때 사용하며 둘의 차이는 PUT은 리소스 전체에 대해 변경하고자 할때 PATCH는 리소스의 한 부분을 변경하고자 할 때 사용합니다.
7. Restful이란 무엇인가
•
RESTFUL이란 REST API 설계 규칙을 올바르게 지킨 시스템을 말합니다.
•
REST API란 HTTP URI로 자원을 명시하고
•
HTTP Method를 통해 해당 자원에 CRUD 연산을 수행합니다.
•
REST API 특징
◦
클라이언트 서버 구조
◦
서버측에선 statelessness 상태 (서버측에선 클라이언트에 대한 사전정보와 상태를 저장하지 않는다)
◦
캐시 처리 가능(HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용 가능하다)
◦
계층화 (API server는 순수 비즈니스 로직을 수행하고 앞단에 보안, 로드밸런싱 등을 추가하여 구조상의 유연성을 줄 수 있다.)
◦
유니폼 인터페이스 (HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하며, 특정 기술에 종속되지 않는다.)
8. CORS
•
내 인증정보 같은 민감한 정보들이 다른 사이트 서버로 탈취 당하지 않도록 막는것이 SOP인데
•
다른 출처간에 리소스를 공유할 수 있도록 하는것을 CORS라고 합니다.
•
CORS 문제 해결 방법으로는 프론트서버에서 해결하는 방법과 직접 헤더에 설정하는 방법,
•
또는 spring에서 설정하는 방법이 있습니다.
◦
filter에 추가하여 access-control 확인하는 방법
◦
corsOrigin 애노테이션을 컨트롤러에 붙이는 방법
◦
webMvcConfigurer을 상속받아 coresMapping을 추가하는 방법
9. OSI 7계층과 그 존재 이유
•
네트워크간의 통신 과정을 물리계층, 데이터링크 계층, 네트워크 계층, 전송계층, 세션계층, 표현계층, 응용 계층으로 총 7개의 계층으로 나눈 것을 말합니다.
•
그 존재 이유는 복잡한 네트워크 통신에 대한 흐름 파악을 편하게 하기 위해서, 이상 발생 시 그 단계만 고치기 위해 사용됩니다.
10. TCP/IP 계층
•
실무에서 사용되는 계층으로
•
네트워크 인터페이스 계층, 인터넷 계층, 전송 계층, 응용 계층으로 이루어져 있습니다.