일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BFS
- 재귀
- 역방향 반복자
- 자바
- 그리드 알고리즘
- 이분탐색
- 그래프
- TCP
- 브루트포스
- Spring
- 컴퓨터 네트워크
- 트리
- 분할 정복
- 다이나믹프로그래밍
- AWS
- 그리드
- 도커
- 다이나믹 프로그래밍
- SQL
- CI/CD
- GIT
- 백준
- 자료구조
- 순열
- 알고리즘
- github action
- HTTP
- 분할정복
- 스프링
- dfs
- Today
- Total
코딩성장스토리
컴퓨터 네트워크 개념 정리(CH.3 Transport layer) 본문
Transport layer
저번 파트에서 application layer를 다루어 봤는데 이번에는
Transport layer를 다루어 보자.
이번 장은 transport layer service 뒤의 원칙을 다루는 시간이다
TCP: Transmission Control Protocol 와 UDP: User Datagram Protocol
- TCP -연결형, 신뢰할수있는 데이터 전송을 보장, 흐름/혼잡제어 해줌, 보안안함
- UDP -비연결형, 완전한 데이터 전송 보장안함, 빠름, 영상 스트리밍 회사에서 이용
- stream socket : TCP 전송을 위하여 통신하는 소켓
- datagram socket : UDP 전송을 위해 통신하는 소켓
Multiplexing/demultiplexing
Multiplexing : 보내는 자가 받는 자에게 특정 ip와 port에 데이터를 특정해서 보내는 것
demultiplexing : 받은 자가 보낸 자에게 응답을 보내는 특정 ip와 port에 보내는 것
connectionless demultiplexing할 때 필요한 것 (UDP)
destinaion IP address
destination port number
connetction-oriented demux할 때 필요한 것 (TCP)
destinaion IP address
destination port number
source IP address
source port number
UDP
UDP checksum
UDP 는 연결하지 않고 보내는 것이기에 에러가 있는지 없는지 체크를 해야한다. 체크하기 위해 있는게 checksum이다
- checksum 세그먼트 안의 비트에 대한 변경사항이 있는지 검사하는 것이다. (16bit 워드의 합으로 오버플로는 제일 오른쪽 자리에 더해준다. 그 값을 1의 보수(토글)를 취한다.)
데이터에 에러가 없으면 receiver checksum 의 값은? 111111111111111111 (all 1)
신뢰적인 데이터 전달 원칙
- ACK and NAK 데이터의 오류 발생 유무를 검사한다. 오류가 없다면 ACK를, 있다면 NAK를 전송한다. -
- sequence number 메시지를 통신망에 보낼 수 있도록 패킷으로 나눈 경우, 그 순서에 따라 붙인 일련 번호이다. -
- timeout Data를 보냈는데 일정 시간 동안 피드백이 없을 시에 데이터를 다시 보낸다. 이때 이 일정 시간이 초과되는 것이 timeout이다.
RDT(Reliable data transfer protocol)
- RDT 2.0 : error가 발생하는 신회할 수 없는 채널에 Data를 보내는 것 따라서 error check를 해야함 -> 이때, checksum을 이용한다. error 감지 작업이 끝나면 피드백을 해줘야한다. error 없으면 ACK 전달, error 있으면 NAK 전달한다. -
- RDT 2.1 : 피드백인 ACK, NAK도 에러가 발생할 수 있음 -> 따라서, sequence number를 이용 수신부에서 ACK를 보냈는데, 송신부에서는 NAK로 읽어서 데이터를 다시 보내는 상황이 생김 (즉, 수신부에서는 ACK를 보내면 1을 기다리는데 0이 온다. 그러면 수신부에서는 ACK를 다시 보낸다. 그러면 다음꺼인 1이 온다.) -
- RDT 2.2 : NAK를 사용하지 않는다. ACK에 sequence number을 붙인다. -
- RDT 3.0 : error 뿐만아니라 loss도 발생하는 경우이다. 만약, 데이터가 가다가 사라진 경우에는 수신부에서 받지 못해서 feedback을 주지 않는다.(보낸줄모름) RDT 3.0은 일정시간 기다려도 feedback을 받지 못하면 최근에 보낸 sequence를 넣어서 다시 데이터를 보낸다.
- RDT가 진행되는 layer와 protocol을 각각 쓰시오. - application laye, transport layer, link layer
Pipelining: increased utilization. - 데이터 페킷을 보낼 때 여러개를 한번에 보내는 것
Go-Back-N - window size를 한번에 다 보내고 손실로 안오는 패킷이 있으면 안 온 패킷부터 window size로 보내는 것
Selective repeat- window size를 한번에 보내고 손실로 안오는 패킷이 있어도 그 다음 패킷 계속 보냄
TCP congestion control: AIMD
패킷을 점진적으로 갯수를 늘려가며 보내다가 손실이 나거나 오류가 나오면 보내는 패킷 수를 줄임
'CS' 카테고리의 다른 글
컴퓨터 네트워크 개념 정리(CH.06 The Link Layer and LANs) (0) | 2022.12.03 |
---|---|
컴퓨터 네트워크 개념 정리(CH.05 Network Layer:Control Plane) (0) | 2022.12.03 |
컴퓨터 네트워크 개념 정리(CH.4 Network Layer:Data Plane) (2) | 2022.11.26 |
컴퓨터 네트워크 개념 정리(CH.2 Application Layer) (1) | 2022.11.26 |
컴퓨터 네트워크 개념 정리 (CH.1 네트워크란) (2) | 2022.11.26 |