목록분류 전체보기 (33)
공부하는 블로그

이전 IP 프로토콜 통신의 한계(비연결성, 비신뢰성, 패킷 순서 문제)를 TCP가 해결해준다.UDP는 해결해주진 않지만 어느정도 도움은 준다. 인터넷 프로토콜 스택의 4계층애플리케이션 HTTP, FTP전송 TCP, UDP인터넷 IP네트워크 인터페이스 TCP의 특징연결 지향 - TCP 3 way handshake 논리 연결데이터 전달 보증순서 보장 신뢰할 수 있는 프로토콜이며, 현재는 대부분 TCP 통신을 이용한다. TCP 3 way handshake란 요즘은 최적화를 하면서 3번째 ACK 메시지를 보낼 때 데이터를 함께 보내기도 한다고 한다. 주의해야 할 점이 있는데 이 과정은 물리적으로 연결된 게 아니라 개념적으로 연결된 것이다.'개념적으로 연결됐다'는 말의 의미중간에 노드들이 실제로 연결됐는지는 ..

클라이언트가 서버에게 어떤 메시지를 보내고 싶을 때, 물리적인 거리가 멀면 인터넷 망이라는 것을 이용해서 메시지를 보내야 한다. 하지만 이 인터넷 망은 복잡하기 때문에, 메세지가 전달될 수 있도록 어떤 규칙이 있다. IP(인터넷 프로토콜)을 사용하면 상대방에게 정보를 전달할 수 있다. IP의 역할 - 지정한 IP 주소(IP Address)에 데이터 전달 - 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보 패킷에는 출발지 IP, 목적지 IP, 그 외 기타 정보가 있으며, 그안에 전송 데이터가 포함된다. 하지만 IP 프로토콜만으로 통신을 하기에는 한계가 존재한다. - 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 - 비신뢰성 - 중간에 패킷이 ..
이전에도 공부를 하면서 웹에 대한 기본 지식이 부족하다고 느꼈다. handshake는 뭔지, TCP는 왜 연결 신뢰성이 있다고 말하는지, 한 번 정리를 해야겠다고 느끼던 중,인프런에서 김영한님의 강의가 30% 할인한다는 소식을 듣고 HTTP 강의를 신청했다. 그 강의를 보면서 메모한 것을 정리한 카테고리

프로젝트에서 인증/인가를 사용하기 위해 JWT를 구현하면서 JWT 필터를 작성했다. JWT 필터는1. 요청 URI가 퍼블릭이라면 필터 통과2. 아니라면 인증 헤더가 올바른지 확인3. JWT 토큰 파싱, 검증4. 인증 정보를 SecurityContext에 담고 필터를 통과순서로 진행되게 로직이 구성돼있다. private boolean isPublicUri(String uri) { return uri.startsWith("퍼블릭URI"); }if (isPublicUri(request.getRequestURI())) { filterChain.doFilter(request, response); return; } 그리고 코드리뷰를 하다가 이 코드에서 두 가지 문제점이 제기되었다.1. SecurityC..

프로젝트를 진행하면서 엔티티를 삭제할 때 실제로 레코드가 삭제되는 물리 삭제 방식이 아닌 삭제 플래그를 활성화하는 논리 삭제를 도입했다. 때문에 어떤 엔티티를 조회할 일이 있으면 WHERE절에 is_deleted=FALSE 조건을 항상 추가해줘야했다. 그런데 자주 사용하는 칼럼에 인덱스를 적용하면 쿼리 성능이 좋아진다는 것을 듣고 실험을 해보았다.먼저 더미 카드 데이터를 100만개 만들고, 내가 지금 만든 서비스에서 날리는 쿼리문을 50회씩 각각 날려보면서 평균 실행시간을 측정했다.SELECT c.card_id, c.title, COUNT(DISTINCT m.id) AS manager_countFROM card cLEFT JOIN manager m ON m.card_id = c.card_id AND m..

AWS S3을 이용해서 프로필 이미지 업로드 관련 기능을 구현하려고 하던 중, 자꾸 Region을 못 찾겠다는 메세지를 뱉어냈다. SdkClientException: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region. 분명 Bean을 등록할 때 Region을 함께 설정해줬는데 말이다.. @Bean public S3Client s3Client() { AwsBasicCredentials awsBasicCredentials = AwsBasicCredentials.create(accessKey..