[네트워크 프로그래밍] 2. TCP

유기태·2023년 11월 23일
0

소켓 입출력 버퍼

즉, 유저입장에서 볼 수 없는 영역
(커널 버퍼)
소켓을 만들때 recvBuffer sendBuffer를 만듬

소켓 입출력 버퍼의 과정

  1. send를 할때 sendBuffer에 복사함
  2. 이 후 상대방쪽 recvBuffer에 복사됨
  3. 상대방에서 recv를 하면 recvbuffer에 값을 가져옴

특수 상황

sendBuffer가 꽉차있을경우
1. send 데이터는 대기(sleep 상태)

recvBuffer가 비어있을 경우
1. recv데이터가 올때 까지 대기

-> 즉, 둘다 대기 상태를 주는 블록킹 함수임
send와 recv는 모두 buffer에 데이터에 따라 블록킹되는 함수임을 알 수 있음
두개의 함수 같은 경우 블록킹 당할 경우 더 이상 CPU를 점유하지 않고 context switching을 함

즉, TCP에서 만약 데이터를 단 시간에 많이 보내면 받는 곳에 스레드를 1초동안 재우고 받으면 recvBuffer안에 있는 데이터를 데이터를 나눠 받는것이 아니라 recvBuffer안에 있는 데이터를 다 받아오게된다.

profile
게임프로그래머 지망!

0개의 댓글