CS/네트워크
-
네트워크 Timeout에 대처하는 방법CS/네트워크 2024. 1. 7. 00:01
개요항상 조금 헷갈리던 개념이었던 네트워크 Timeout에 대해 정리해보고자 합니다. 이 글을 읽으면 다음과 같은 궁금증을 해결할 수 있습니다.1. 네트워크의 통신은 어떻게 일어날까?2.네트워크 Timeout은 왜 발생할까?3. 네트워크 Timeout이 발생하면 어떤 것들을 주의해야 할까?4. 네트워크 Timeout이 발생할 수 있으니 어떻게 대처해야 할까? 네트워크 통신이란? 컴퓨터, 스마트폰, 서버 등의 장치가 인터넷이나 네트워크를 통해 서로 데이터와 정보를 교환하는 프로세스입니다. 이때 통신을 위해서 가장 일반적으로 TCP/IP 프로토콜이 활용됩니다. TCP/IP는 3 way handshake를 통하여 패킷(데이터)의 안정적인 전송을 보장합니다. 네트워크에 있는 장치들이 데이터를 교환하기 위해서는 ..
-
HTTP/TCP 지연과 성능개선법CS/네트워크 2023. 8. 13. 00:01
개요 "HTTP 완벽 가이드"라는 책을 읽으며 HTTP 프로그래머에게 영향을 주는 가장 일반적인 TCP 관련 지연들에 대해 정리해보고자 합니다. TCP 커넥션 핸드셰이크 지연 어떤 데이터를 전송하든 새로운 TCP 커넥션을 열고 IP 패킷을 교환합니다. SYN, ACK 등의 플래그를 포함하는 패킷을 주고받고 커넥션이 잘 맺어졌음을 서버에게 알리고 데이터 전송이 이루어집니다. HTTP 트랜잭션이 아주 큰 데이터를 주고받지 않는 평범한 경우라면 이런 핸드셰이크과정이 눈에 띄는 지연을 발생시킵니다. 예를 들어 크기가 작은 HTTP 트랜잭션은 50% 이상의 시간을 여기에 사용합니다. 이미 존재하는 커넥션을 재활용하여 이 문제를 해결합니다. 확인응답 지연 인터넷 자체가 패킷 전송을 완벽하게 보장하지 않기 때문에 T..
-
10만 유저 동시 접속 가능하게 하기CS/네트워크 2023. 6. 26. 00:01
개요 동시 접속에 대해 이곳저곳 물어보다가 특정 아티클을 추천받게 되었고 이를 읽어보면서 나만의 이해로 다시 정리해보고자 합니다. https://shdkej.com/blog/100k_concurrent_server/ 10만 유저 동시 접속 가능하게 하기 ⚠️ 이 글은 의식의 흐름대로 작성되었습니다. 한 대의 PC로 10만 접속자 유지가 가능한가 (에코 서버의 경우) 안된다면 최소 몇대의 PC가 필요한가 (사양) 왜 10만인가 토트넘 경기 SPOTV 유튜브 동 shdkej.com 소켓, 포트, 커넥션 너는 무엇인가? 포트는 tcp connection spec에서 16bit으로 정의되어 있기 때문에 0~65535까지 열릴 수 있습니다. 커넥션은 발신지 IP:PORT와 수신지 IP:PORT를 가진것을 말합니다..
-
CLOSE_WAIT 과 TIME_WAITCS/네트워크 2023. 6. 25. 00:01
개요 서버의 CPU 등 리소스와는 별개로 LB, Nginx 등을 사용하다 보면 클라이언트단에서 문제가 발생하는 경우가 있을 수 있다는 것을 깨닫고 CLOSE_WAIT과 TIME_WAIT에 대해 알아보고자 합니다. TCP Connection 위의 다이어그램에서는 Server가 CLOSE_WAIT를 보냅니다. 다만 서버가 먼저 종료하겠다고 FIN을 보내는 경우에는 클라이언트에서 CLOSE_WAIT을 가지게 됩니다. CLOSE_WAIT을 벗어나려면 애플리케이션에 명시적으로 프로세스를 종료하는방법밖에 없습니다. 실제 서버에서 CLOSE_WAIT이 발생하는 원인 JVM의 THhread Dumps를 분석한 결과, 대부분의 쓰레드가 검색 결과를 받아오지 못하고 WAITING중이었습니다. 해당 결과는 로컬에서 받아와야..
-
세션 하이재킹과 TCP Sequence NumberCS/네트워크 2022. 7. 28. 00:01
세션 하이재킹이란? 세션은 클라이언트와 서버 두 대의 컴퓨터 간의 활성화된 상태를 말합니다. 이때 세션 하이재킹은 로그인된 상태를 가로채는 것을 말합니다. TCP 세션 하이재킹은 TCP의 고유한 취약점을 이용하여 정상적인 접속을 빼앗는 방식입니다. TCP는 클라이언트와 서버 간 통신을 할 때 패킷의 연속성을 보장하기 위해 각각 시퀀스 넘버를 사용합니다. 이 시퀀스 넘버가 잘못되면 이를 바로잡기 위한 작업을 하는데 TCP 세션 하이재킹은 서버와 클라이언트에 각각 잘못된 시퀀스 넘버를 위조하여 연결된 세션에 혼란을 주고 자신이 끼어들어가는 방식입니다. TCP 패킷 TCP 프로토콜은 신뢰형 프로토콜로 다음과 같은 기능을 제공합니다. 1. 데이터 양을 조절하는 흐름 제어 2. 데이터 유실에 대처하는 오류 제어 ..
-
ICMP 프로토콜이란?CS/네트워크 2022. 7. 22. 00:01
ICMP 프로토콜이란? ICMP는 Internet Control Message Protocol (인터넷 제어 메시지 프로토콜)입니다. 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰입니다. 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받습니다. 보통 상대방과 통신이 되는지 안되는지 확인하는 데 사용됩니다. 통신 환경의 문제점에 대한 피드백을 제공하지만 IP가 신뢰 가능하도록 만들지는 않습니다. 네트워크 계층인 3 계층에 속하며 IP 프로토콜과 같이 사용됩니다. ICMP 프로토콜의 구조 Type 대분류의 개념으로 30개의 종류가 있습니다. 가장 많이 쓰이는 타입은 다음과 같습니다. 0번 : Echo Reply (응답) 3번 : Destinatnion Unrea..
-
ARP 프로토콜이란?CS/네트워크 2022. 7. 17. 00:01
ARP 프로토콜이란? 같은 네트워크 대역에서 통신을 하기 위한 필요한 MAC 주소를 IP주소를 이용하여 알아오는 프로토콜입니다. 보통 우리가 www.google.com을 검색하게 되면 해당 도메인 주소가 DNS 서버에 의해 IP주소로 변환됩니다. 즉, 우리는 IP주소만 알고 있으며 MAC 주소는 알지 못합니다. 하지만 데이터를 보내기 위해서는 계층별로 캡슐화가 필요하며 이때 IP주소와 MAC 주소가 모두 필요하게 됩니다. 이때 ARP를 통해 MAC주소를 알게 됩니다. 2계층과 3계층 사이에서 동작하는 프로토콜입니다. ARP 프로토콜이 필요한 이유는? 왜 IP -> MAC 주소의 절차를 거쳐서 통신해야 할까요? IP를 활용하면 메시지를 보내고자 하는 PC의 네트워크까지만 접근할 수 있습니다. 또한 IP주소..
-
공인 IP와 사설 IPCS/네트워크 2022. 7. 15. 00:01
IP란? IP란 Internet Protocol의 약자로 인터넷에 연결되어 있는 모든 장치들을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소입니다. 예를 들어 웹 브라우저에 www.google.com을 검색하게 되면 DNS가 이를 IP주소로 변환하여주어 IP주소로 통신하게 됩니다. IPv4와 IPv6 IPv4는 IP version 4의 약자로 전 세계적으로 사용된 첫 번째 인터펫 프로토콜입니다. 32비트 방식으로 8비트씩 4자리로 되어 있으며 각 자리는 온점으로 구분합니다. IPv4는 0 ~ 2^32(약 42억 9천) 개의 주소를 가질 수 있는데, 전 세계적으로 인터넷 사용자 수가 급증하면서 IPv4 주소가 고갈된 위기에 처했으며 이러한 고갈 문제를 해결하기 위해 등장한 주소가 바로 IPv6입니다..