전체 글
L4 - TCP Header 구조
L4 - TCP Header 구조
2021.12.27TCP는 L4 프로토콜의 일종이며. Transmission Control Protocol 의 약자이다. 전송을 제어 하는 기능을 가진 L4 통신방식이다. L4 얘기를 한다고 하면 TCP 얘기를 많이 할것이다. 그만큼 중요하다. 통신방식을 쉽게 빠르게 이해하기를 원한다면 가장 첫번째로 보아야할 것은 바로 통신에 사용되는 Header이다. 위의 그림이 뭘 헤더라고 부르냐? 했을때 가장 간단하게 표현한 그림인듯 하다. 친구한테 메일로 HELLO라고 보낸다고 하자. 실제로는 HELLO말고도 통신에 필요한 정보들이 필요하다. 이것도 주고 받아야 컴퓨터 끼리 통신을 잘한다. 그렇다 Header, Payload는 랜선 따라서 같이가는 동반자다. 컴퓨터 네트워크 상의 통신에 사용되는 여러가지 데이터는 Header다. ..
L4 - TCP의 Connect 과정시 3Way-Hand Shake
L4 - TCP의 Connect 과정시 3Way-Hand Shake
2021.12.23전송 프로토콜로 TCP 방식을 사용하려한다면, 본격적인 데이터통신에 임하기전에 Connect(연결) 과정을 거쳐야한다. HandShake라는 이름에서도 의미를 알수 있듯이, 이것은 일종의 양측 상호확인 절차이다. (합시다. Okay 저도 수락 합니다. 아 그럼 괜찮은걸로 알겠습니다?) 같은... 클라이언트 측은 통신을 원한다는 의사를 밝힌다. 이것이 곧 서버의 특정 Port에 SYN을 보내는 행동이다. 물론 보이듯이 서버는 해당 Port를 LISTEN 상태로 두어야한다. (LISTEN 상태를 곧 열린 상태라고 보아도 된다.) 서버는 열린 Port로 들어온 Client로부터의 SYN을 받고, Okay. 통신하자 하고 SYN+ACK를 보낸다. Client는 서버에서 Okay가 왔으니 이제부터 통신할수 있겠구..
네트워크/데이터 통신 기본 이론 - Socket
네트워크/데이터 통신 기본 이론 - Socket
2021.12.22네트워크 프로그래밍을 처음 공부할때에 가장 막막한 점은 막연한 이론은 어느 서적에서나 볼 수 있다는 점이지만, 실제로 프로그램을 만든다고 할때에 이를 코드로 어떻게 구현해야 하는가? 이다. 그래서 많은 전문가들이 보통 Socket Programming부터 차근차근 하나씩 경험하기를권한다. Socket이란 무엇인가? 통신시 필요한 발신지(Source)와 목적지(Destination) 에 관한 정보와 통신 진행상황, 또 통신시 필요한 정보들을 기입해둔 데이터블럭을 이야기한다. App은 어찌 되었던 원격으로 데이터를 송신하기 위해서 Network Adapter에 접근해야 한다. 결국 하드웨어와 관련된 이야기이며, 이를 관리하는, OS 그리고 Driver를 거쳐야 하는 것이다. 정리하면 다음과 같다. App에서..
네트워크/데이터 통신 기본 이론 - OSI 7 계층 , TCP/IP 4 계층
네트워크/데이터 통신 기본 이론 - OSI 7 계층 , TCP/IP 4 계층
2021.12.22원격 통신시 거치는 과정을 계층으로 보기좋게 나타낸 것이 OSI 7 계층과 TCP/IP 4계층 이다. (표준 위원회가 있다고 하고 거기서 무슨 일을 한다고는 하던데 잘은 모르겠다.) 위로 갈수록 소프트웨어에 가까워지며, 아래로 갈수록 하드웨어에 가까워지는 특성은 같다. 실제로 네트워크 프로그래밍시에 가장 많이 신경을 쓰게 될 부분은 TCP 계층의 Application 과 Transport 계층이다. 각 계층은 통신목적지를 구분하기 위해 각기 다른 주소방식을 사용하며, 또한 각기 다른 통신규약(프로토콜)을 이용한다. TCP/IP 4계층의 Network Interface 와 OSI 7의 Datalink Layer는 MAC 어드레스를 사용하며, 이 계층에서 사용하는 Protocol을 통칭해 Ethernet 프..
[BOJ] 12869 뮤탈리스크 - 완전탐색
[BOJ] 12869 뮤탈리스크 - 완전탐색
2021.12.03문제에서 제시한 최대 SCV는 3마리 이다. 세마리의 SCV가 있다고 하자. 뮤탈의 쓰리쿠션 공격 방법은 모두 6가지 이다. A -> B -> C A -> C -> B B -> A -> C B -> C -> A C -> A -> B C -> B -> A 이 6 가지 경우로 재귀호출을 계속 하게 되면 언젠가 SCV 3마리의 체력이 모두 0이하가 될 것이다. 재귀 호출의 Depth 자체가 공격회수와 같다고 볼수있으므로, 이를 비교해 최소값을 구하면 된다. 코드를 구현하면 다음과 같다. SCV의 체력이 음수가 될수 있음에 유의한다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #include int Max = 0x7FFFFFFF; using name..