목록tcp (5)
Coding Memo
Summary 1. 소켓이 listening 상태에서 Accept를 하지 않고 backlog도 여유가 있을 경우에 클라이언트에서 이 소켓에 Connect를 하게 된다면 실제로 연결이 되지 않았지만(Accept 되지 않았지만) 클라이언트에서는 Connect에 성공한 것으로 간주될 수 있다. 따라서 이 때, connect에 관련한 IO callback이 호출될 수 있고, SocketError 값 또한, Success로 받아들인다. 위 상황에서 서버는 실제로 Accept를 한 상태가 아니기 때문에 서버에서는 Connected로 간주되지 않는다. (다시 말하자면, accept를 하지 않고 있기 때문에 backlog(대기열)에만 연결 시도한 소켓이 추가되었을뿐 서버는 이 상태를 연결상태로 받아들이질 않는다.) 2..
TcpClient 및 TcpListener는 Socket을 직접 컨트롤 하지 않고 간단하고 빠르게 서버를 오픈하고 클라이언트로 서버에 연결할 수 있도록 구성되어 있는 기본 클래스이다. https://learn.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient?view=net-7.0 TcpClient Class (System.Net.Sockets) Provides client connections for TCP network services. learn.microsoft.com 특징으로는 동기 및 비동기 메서드를 포함하고 있다는 것과 Send와 Receive시에 NetworkStream으로 데이터를 읽고 쓸 수 있다는 점이다. 추가적으로 Client..
흐름 제어란? 발신자가 수신자가 처리할 수 있는 것보다 더 빨리, 많이 데이터를 보낼 경우에 수신자는 일부 데이터(패킷)에 대해 삭제가 되거나 손실이 발생 할 수 있다. 이 문제를 방지하기 위해 TCP 연결에서는 흐름제어를 사용한다. 흐름제어(flow-control)는 수신자의 상태를 보고 전송을 제어하여 데이터의 손실이나 정체 없이 효율적이고 안정적으로 통신을 가능하게 한다. 예를 들어, 수신자가 100바이트의 버퍼를 가지고 있는데, 발신자가 150바이트의 데이터를 보냈다고 가정하자. TCP 연결에서 발신자는 수신자가 처리 할 수 있는 데이터의 양 (Sliding Window)을 미리 정한다. 따라서 발신자는 먼저 100바이트를 송신하고, 수신자가 먼저 100바이트를 받고 처리 후, 발신자에게 추가 데..
OSI OSI는 Open System Interconnection으로 통신 시스템의 기능들을 7개의 계층(layer)로 표준화하는 개념적인 프레임워크이다. 1970년대 말, 1980년대 초에 ISO에서 서로 다른 컴퓨터 시스템과 네트워크 장치 간의 상호작용을 위해 개발되었다. OSI의 7개 계층은 아래와 같다. 이게 가장 초기의 표준이긴 하지만 활용성은 그리 좋지 않았다. 따라서 OSI 모델을 전부 가져오지는 않았지만 일부를 가져와 사용하는 TCP/IP 모델이 있다. TCP/IP Transmission Control Protocol / Internet Protocol로, 현대 인터넷 기반을 형성하는 가장 실용적인 네트워크 프로토콜 프레임워크이다. 현재 가장 많이 사용되고 있으며, 사실상 TCP/IP가 표..
본 포스팅은 인프런에 등록되어 있는 Rockiss 님의 강의를 보고 간단하게 정리한 글입니다. TCP (Transmission Control Protocol)은 네트워크 5계층에서 Transport Layer에 해당하는 송수신 간 전송 방식 중 하나이다. 보통은 UDP와 대조되어 사용된다. TCP는 다음과 같은 특징을 가지고 있다. 1. 데이터 전송 경로 외에도, 호스트 간 연결이 따로 필요하다. 2. 송수신데이터에 대한 데이터의 경계(Boundary)가 없다. 3. 전송 순서가 보장된다. 4. 전송 시, 데이터 손실이 발생할 경우 다시 전송한다. (신뢰성이 있다.) 5. 데이터를 받을 호스트가 여건이 안될 경우 데이터를 일부만 전송한다. (흐름/혼잡제어) 6. 위 특징에 따라 고려할 것이 많으니 속도가..