티스토리 뷰
접속(connect)
커넥션: 소켓끼리의 연결을 의미
- 소켓 한개분량의 메모리 영역 확보 ->제어정보를 기록한다
- Application의 connect 호출: 접속단계
- 수신측의 IP주소와 포트번호를 통해 연결이 가능한지 확인
- 데이터를 임시적으로 저장하는 버퍼메모리 생성
- 프로토콜 스택에 서버 IP와 포트번호를 받아 TCP담당 부분에 전달
- 제어정보를 이용하여 TCP 헤더생성
- 컨트롤 비트 SYN을 1로설정(초기 접속 시)
- IP담당 부분에 전달
- 수신측 소켓과 연결(상세한 부분 생략)
- 응답 시 ACK비트 설정 -> 연결 되었음을 확인
작성(write)
송신
접속(connect)이후의 동작으로 송신하려는 데이터를 프로토콜 스택에 전달
- 프로토콜스택에 버퍼메모리에 데이터를 임시저장
- 네트워크 이용효율을 위해 패킷을 적당한크기로 보내기 위함, MTU와 MSS를 이용하여 판단
- 프로토콜 스택 내부의 타이머로 일정시간을 측정하면 패킷 송신
- 수신측에서 ACK이 제대로 오지 않을경우 임시 메모리의 데이터를 다시 전송
- 수신측도 동일하게 클라이언트로 데이터를 보낼경우 ACK을 반환 받아야하며 받지 못할 경우 다시 전송한다.
- 계속해서 오류가 난다면 오류를 통지하고 송신 동작을 강제로 종료한다.
- Application에서 데이터를 언제 송신할지 설정이 가능하다
- 버퍼에 머물지 않고 바로 송신
- 송신 타이밍 제어
수신(read)
패킷이 올바르게 도착하였는지 확인하여야한다
- SEQ(시퀀스번호): 몇번째 바이트에 해당하는지 기록하는 TCP 컨트롤비트
- 수신확인응답: 누락한 데이터가 없을 시 ACK 번호 기록
- ACK = SEQ + data.length
응답메시지 받기 (read)
- 버퍼메모리에 있는 데이터를 Application으로 넘겨준다.
- 버퍼메모리가 비게 되면 다시 데이터를 받아 또 Application으로 건네준다.
종료
- FIN 컨트롤 비트를 1로 설정함으로써 연결을 끝는다
- 4 hand shaking
- 클라이언트 FIN 송신
- 서버 ACK 반환
- 서버 FIN 송신
- 클라이언트 ACK 반환
- 소켓 정보 말소
ACK 관리(close)
- 대기 시간 관리: ACK번호가 돌아오는 시간을 계측하여 유동적으로 대기시간 설정
- 윈도우 제어방식: 윈도우사이즈(수신가능한 데이터의 최대값)를 통지하여 데이터의 양이 넘지않게 한다 -> 윈도우 필드 설정
- ACK번호와 윈도우 통지 타이밍 고려하기
Reference
성공과 실패를 결정하는 1%의 네트워크 원리
'성공과 실패를 결정하는 1%의 네트워크원리' 카테고리의 다른 글
[네트워크 원리] 방화벽의 원리와 동작 (0) | 2021.10.31 |
---|---|
[네트워크 원리] 프로토콜 스택 (0) | 2021.10.28 |
[네트워크 원리] 도메인과 IP주소 (0) | 2021.10.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- React useMemo
- serverless nestjs
- 표현 가능한 이진트리
- React useCallback
- 불량 사용자 자바스크립트
- storybook scss이슈
- 서비스 디자인 패턴
- nestjs 배포하기
- 관심사 분리하기
- nextjs 에러핸들링
- react suspense
- 1600 파이썬
- CSS
- javascript
- node version yarn berry
- serverless 배포
- 선언적 UI
- storybook react is not defiend 해결
- useCallback과 useMemo 사용
- 미로탈출 명령어
- suspense 장점
- node 버전 마이그레이션
- 에러핸들링
- 백준 22862
- 백준 1600번
- nextjs errorboundary
- 자바스크립트
- storybook scss import
- 가장 긴 짝수 연속한 부분 수열
- 서버사이드 error handling
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함