티스토리 뷰
- 애플리케이션 계층에 데이터를 분류하여 전달하는 역할을 한다.
- 트랜스포트 계층은 TCP 또는 UDP 프로토콜을 대표적으로 사용한다
- 어떤 프로토콜을 사용할 것인가에 따라 헤더의 내용(정보)이 다르다.
- 포트를 가지고 논리적으로 구분을 한다.
TCP
- TCP 프로토콜은 연결의 신뢰성을 보장한다.
- TCP 헤더에 포함되는 내용들 (pg113)
- 송수신처 포트번호
- 시퀀스번호(송신 데이터의 일련번호)
- ack 번호(수신 데이터의 일련번호)
- 데이터 오프셋
- 컨트롤비트
- 윈도우
- 체크섬
3 handshake
- syn, ack 컨트롤비트로 3 handshake를 하여 연결을 확인한다.
- syn ack ack 으로 이루어진다.
- syn, ack 이 모두 1로 체크되어 있어야 연결을 확인했음을 인지하고, 데이터 송수신을 한다.
4 handshake
- 연결을 끊을 때는 4 handshake를 한다.
- fin ack+fin ack 으로 이루어진다. ack 을 받지 못하면 요청한 데이터가 유실되었을 것으로 판단해 다시 fin 요청을 보낸다.
- 하지만 바로 소켓이 말소되면 소켓에 있던 port 정보가 어떤 것인지 몰라 fin 요청의 보낼 소켓을 알 수 없다. 또한, 그 사이에 같은 port번호에 다른 연결이 맺어진다면 그 소켓은 생성되자마자 종료 신호를 받게 될 것이다.
- 연결을 끊을 때, 일정 시간 동안 연결 종료에 대한 문제점을 방지하는 것이 TIME_WAIT 의 목적이다. 패킷 유실에 따른 비정상적인 통신 흐름의 발생을 막는 것이다.
시퀀스 번호
- 난수 기반의 시퀀스 번호를 같이 보낸다.
- 시퀀스 번호의 초기값을 공유한다.
- 시퀀스번호 + 데이터 , ack 번호 를 주고받아 데이터가 정상 수신되었는지, 순서가 맞는지를 확인한다.
- 오류 발생시 회복처리(다시 보내기)가 가능하다.
- ack 번호가 돌아오는 시간의 평균값으로 대기시간을 산정한다. 이것을 타임아웃 값이라고 한다.
- 타임아웃 값 안에 수신이 확인이 안 되면 다시 패킷을 보낸다.
- 타임아웃 값은 동적으로 변화한다.
윈도우 필드
- 수신 버퍼의 크기를 송신측에 알려 해당 버퍼 크기만큼만 연속적으로 보내도록 한다.
- 수신 가능한 데이터 양의 최대값을 윈도우 사이즈라고 한다.
참고
- [책] 성공과 실패를 결정하는 1%의 네트워크 원리
'Computer Science > 네트워크' 카테고리의 다른 글
[TCP/IP] Internet Layer (인터넷 계층) (0) | 2021.08.07 |
---|---|
소켓과 TCP/IP (0) | 2021.07.28 |
[스터디] 성공과 실패를 결정하는 1%의 네트워크 원리 (0) | 2021.07.27 |
토큰 인증방식(+ 쿠키와 세션 추가내용) (0) | 2021.03.09 |
쿠키와 세션 (0) | 2021.02.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코드스쿼드
- 개발공부일지
- 글쓰기미션
- Spring
- TIL
- React
- python
- 월간회고
- 우아한테크코스
- JS
- CS
- 알고리즘
- javascript
- 카카오
- DB
- java
- 회고
- 인증
- JPA
- OS
- TCP/IP
- Transaction
- 우테코수업
- 객체지향
- 네트워크
- 운영체제
- 학습로그
- 마스터즈코스
- 모의면접준비
- 내부코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함