![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/baP8ww/btqwOnjzZQC/JRBQ77QHEHkGEtWEuLhWu1/img.png)
TCP - States TCP - Connection Establishment 3-Way Handshake 핸드셰이킹(handshaking)은 정보기술과 전기통신 및 관련 분야에서 채널에 대한 정상적인 통신이 시작되기 전에 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정이다. 채널의 물리적인 확립이 잇따르며, 정상적인 정보 전송 이전에 이루어진다. TCP는 안정적인 정보 전송을 보장하기 위해 3-Way Handshake 방식을 사용한다. 구체적인 진행 방식은 아래와 같다. ISN(Initial Sequence Number) 클라이언트의 ISN이 0에서 시작하지 않고 무작위 난수로 설정되는 데에는 2가지 이유가 있다. 첫 번째로, TCP 연결의 포트 번호는 유한 범위에서..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c6OWSn/btqwIKTu40x/IU3MGK7WStytvKHqL4KCzK/img.png)
Checksum 체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다. TCP - Checksum TCP checksum을 계산하기 위해서는 pseudo header라는 것이 필요하다. pseudo header는 TCP의 checksum을 계산하기 위해서 필요한 추가적인 데이터로 다음과 같은 정보를 포함한다. 이제 TCP Checksum을 구하기 위한 절차는 다음과 같다. 1. Pseudo Header, TCP Segment의 모든 값을 16비트 단위로 나눈다. (예를 들어 12바이트(96비트)인 Pseudo Header의 경우 6개의 16비트 값으로 나눌 수 있다.) 2. TCP Header..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/1hSYx/btqwIKyRTIP/kmBeBgpBCecIVavlCZYeM1/img.png)
Segment Structure (세그먼트 구조) TCP는 데이터 스트림으로부터 데이터를 받아 들여 이것을 일정 단위로 분할한 뒤 TCP 헤더를 덧붙여 TCP 세그먼트를 생성한다. TCP 세그먼트는 *IP 데이터그램에 캡슐화되어 상대방과 주고 받게 된다. *IP 데이터그램: IP에서 사용하는 **패킷을 말함 = IP PDU **패킷: 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. TCP 패킷이라는 용어가 종종 사용되지만 이는 정확한 표현이 아니다. 세그먼트가 TCP 프로토콜 데이터 유닛(PDU)을 의미하는 정확한 표현이며 데이터그램은 IP PDU를, 프레임은 데이터 링크 계층 PDU를 의미한다. 프로세스는 TCP를 통해 데이터 버퍼를 인수로 넘겨 줌으로써 데이터를 전송한다. TCP는..
TCP(Transmission Control Protocol) TCP는 인터넷 프로토콜(IP) 제품군의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 *옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. TCP는 전송 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있다. *옥텟 : 옥텟(octet)은 컴퓨팅에서 8개의 비트가 한데 모인 것을 말한다. 초기 컴퓨터들은 1 바이트가 꼭 8 비트만을 의미하지 않았으므로, 8 비트를 명확하게 정의하기 위해 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bvIYWA/btqwFPBrmGz/wwKm1ASkJXecu9trEZSugK/img.png)
인턴일을 하던중에 개발 완료된 WPF 응용프로그램에서 메모리가 계속적으로 증가하는 현상이 생겨 모니터링을 해달라는 부탁을 받았다. 작업관리자 켜놓고 수기로 끄적거리기도 뭐하고 해서 적당한 툴을 찾아봤는데 윈도우에서 제공하는 괜찮은 툴이 있어서 사용했다. 나와 비슷한 상황인 사람에게 도움이 될 수 있으니 방법을 적어본다. 최종 목표는 시간대별로 프로세스의 메모리를 자동으로 체크하는 것이다. 1. Window키 + R, perfmon입력 후 실행 2. 데이터 수집기 집합 - 사용자 정의 (우클릭) - 데이터 수집기 집합 이후 3. 적당한 이름을 입력하고 수동으로 만들기 체크 4. 데이터 로그 만들기 - 성능 카운터 체크 5. 추가 버튼 클릭, 샘플 간격 (메모리를 체크할 시간 간격) 설정 6. 바로 이 화면..
알고리즘문제해결전략 p189 문제 울타리 잘라내기 (문제ID:FENCE, 난이도 중) 알고스팟 링크 풀이 개인적으로 분할정복 문제는 아직 어려워서 고생을 좀 했다. 분할정복 문제가 으레 그렇듯이 나누는 개념 자체는 어렵지 않다. 가운데를 자르고 앞의 절반의 최대값과 뒤의 절반의 최대값을 구해 비교한다. 물론 이 때 분할되는 부분을 처리해주어야 한다. 즉, 잘리는 부분의 울타리 2개를 포함하는 최대값을 구해서 같이 비교해 주어야 한다. 이 때, 이 가운데 부분을 처리하는 부분이 주된 문제인데 절반씩 줄어드므로 logN번 반복되는 연산으로 이 연산을 N시간에 해내야 NlogN으로 풀 수 있다. 내가 처리한 방법은 가운데 2개의 울타리에서 시작해서 좌우로 넓어지면서 최대값을 구하는 것이다. 이때 커지는 방향을..