inflearn logo
강의

Course

Instructor

Core Network Theory to Finish by Memorizing - Basic

TCP 수신 관련하여 질문드립니다

Resolved

402

sete

18 asked

0

강의를 보고, TCP 통신 과정에서 수신자가 Recv를 호출하면 소켓 수신 버퍼에 있던 데이터를 프로세스 상의 버퍼에 옮겨온다고 이해했는데요,

  1. 그러면 소켓 수신 버퍼는 Recv와 같은 api를 따로 호출하지 않아도 알아서 커널이 비동기로 데이터를 받아두는 건가요?

  2. TCP 세그먼트는 어디서 조립되는 건가요?

  3. 만약 TCP 세그먼트가 소켓 버퍼(혹은 그 이전)에서 조립되는게 아니라면, Recv를 호출할 시 세그먼트를 일부만 가져오는 경우가 생길 수도 있다고 생각되는데요, 이 경우에는 추후 어떻게 조립을 할 수 있고, 또 완성되었다는 근거는 어떻게 얻을 수 있는지 궁금합니다.

항상 감사드립니다~~!!^^

network protocol

Answer 1

1

nullnull8537

  1. 네, 그렇습니다. 일단 운영체제가 수신한 후 프로세스가 가져가기를 기다리는 것으로 생각하면 됩니다. 그러므로 이 과정을 줄여서 운영체제가 최초 수신할 때 아예 프로세스 메모리에 저장해주면 불필요한 데이터 복사나 대기가 없어 더 성능이 개선됩니다. 대표적으로 IOCP가 그러합니다. 참고로 함께 알아 두시기 바랍니다.

  2. 운영체제 프로토콜 스택에서 합니다. 정확히는 TCP 프로토콜이 구현된 커널 프로그램이 한다고 보면 됩니다.

  3. 소켓 수준에서는 세그먼트 조립을 전혀 고민할 이유가 없습니다. 소켓 수준까지 올라왔다는 것은 전송오류 보정이나 세그먼트 조립이 모두 끝난 시점이기 때문입니다.

감사합니다. ^^

cicd 서버 올린 후 기존 마스터 노드 기동 시 네트워크 에러

1

80

2

Protobuff is it sufficient for mmorpg?

0

183

2

void IocpEvent::Init() is correct?

0

128

1

캐시 관련 질문입니다.

0

616

1

클라이언트 프로그래머 커리어 고민

0

1256

2

ETag 질문입니다.

0

727

1

Lock-Based Queue 병목현상 질문 드립니다.

0

591

1

TCP 연결 종료 과정 중 Time wait관련

0

771

1

도메인 구입 내용 관련

0

839

3

127.0.0.1과 localhost 차이점에 대해서

3

1848

1

CDN에 리소스를 올린다는 의미가 무엇인가요??

0

496

1

API 서버를 WAS로 볼 수 있는건가요??

0

1801

1

DNS 서버를 여러대 두는 이유

0

910

1

모든 프로세스는 포트를 가지고 있나요??

0

513

1

L2 수준에서 MAC주소 입장에서(기준) 송신/수신 할때의 처리 흐름이 궁금합니다.

0

717

1

IP주소를 이용한 네트워크 주소 식별 관련

0

579

1

L3 Packet에서 payload

0

620

3

몇가지 질문이 있습니다

0

264

1

포트에 대해 궁금한 점이 있습니다

0

313

1

Ip헤더질문 강의에서 의문점

0

287

1

[패킷의 생성과 전달 , 9분 30 초 질문] 소켓은 파일에서 질문입니다.

0

519

1

DHCP와 ARP 동작 하는 부분에 궁금증이 있습니다.

1

1098

1

강의 영상 소리 문제

0

496

3

TCP Buffer Size (Window Size) 크기는 무조건 큰 것이 좋을 까요?

1

2063

2