일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- network
- refactoring
- 리펙토링
- Clean code
- 공인 IP
- Code complete
- floating point
- Sector
- register
- physical address
- MMU
- ack
- 사설 IP
- addressing mode
- TCP
- L2 switch
- osi 7
- L3 Router
- float
- CPU
- 가독성
- interrupt
- ALU
- Public IP
- 코드 컴플릿
- 명령어
- page
- cache
- private ip
- 클린 코드
- Today
- Total
목록ack (4)
Software Lab

TCP에서 접속하는 과정을 3-Way Handshaking이라고 한다. 그렇다면 접속은 왜 필요한가? TCP의 신뢰성 있는 통신을 하기 위해서다. 그러기 위해서는 흐름제어, 혼잡제어, 오류제어를 해야 한다. 이러한 제어들을 하려면 커널 내부에는 송수신 버퍼와 필요한 여러 변수가 생성되어야 한다. 결국 "접속이 되었다"라는 의미는 "커널 내부에 송수신 버퍼와 필요한 여러 변수의 생성이 완료되어 본격적으로 신뢰성 통신을 할수 있게 되었다"라는 것이 된다. 반면에 UDP는 비 신뢰성 통신이다. 그래서 별다른 제어가 필요 없기 때문에 접속이란 과정이 없다. 그림에서 왼쪽 호스트가 오른쪽 호스트로 접속을 시도한다. 접속을 시도하는 쪽이 클라이언트(Client)가 되고 받는 쪽이 서버(Server)가 된다. 클라이..

왼쪽 송신 호스트에서 오른쪽 수신 호스트로 패킷 전송할 때 커널 내부는 어떻게 동작하는지 알아보자. User 영역에서는 5계층 이상의 데이터를 만든다. 이렇게 만든 데이터는 소켓의 Send API를 호출하여 커널 영역으로 넘어간다. 커널 내부에는 큐 구조의 송수신 버퍼가 있는데 연결된 Port 별로 있다. 데이터는 해당 Port의 송신 버퍼로 들어간다. 그리고 MSS(Maximum Transmission Unit) 단위(그림에서는 1000byte) 만큼 잘라서 패킷을 만든다. 커널에서는 2~4계층의 헤더를 차례대로 붙인다. Port, Sequence, Length 등의 4계층 헤더, IP 등의 3계층 헤더, MAC 등의 2계층 헤더를 각각 붙인다. 다음으로 1계층의 NIC(Network Interface..

오류제어가 필요한 이유를 알아보자. 왼쪽 송신 호스트(B 호스트)는 오른쪽 수신 호스트(C 호스트)에게 데이터를 전송한다. 송신 호스트는 디지털 데이터를 빛 또는 전기 같은 파동 형태의 아날로그 신호로 변환하여 전송한다. 아날로그 신호는 전송이 길어지면 강도가 점점 약해져서 형태가 왜곡될 수 있다. 번개와 지진 같은 자연재해로 인해 광케이블, 네트워크 장비 등에 영향을 주어 역시 신호가 왜곡 될 수도 있다. 결국 이렇게 왜곡된 아날로그 신호는 오류가 있는 디지털 데이터로 변환될 것이다. 이렇듯 네트워크 전송 과정에서 데이터의 오류가 발생할 수 있다. 다음은 TCP에서 오류제어를 어떻게 하는지 알아보자. 왼쪽 송신 호스트가 오른쪽 수신 호스트로 패킷들을 전송한다. 그런데 그중에서 한 패킷이 수신 호스트에 ..

흐름 제어가 필요한 이유를 알아보자. 왼쪽 송신 호스트(B 호스트)는 오른쪽 수신 호스트(C 호스트)에게 데이터를 전송한다. 그런데 송신 호스트는 20M/Sec 송신하는데 오른쪽 수신 호스트는 겨우 10M/Sec으로 수신받아 처리할 수 있다. 이렇게 되면 수신 호스트는 나머지 10M/Sec의 데이터를 수신할 수 없는 문제가 생긴다. 따라서 송신 호스트가 20M/Sec에서 10M/Sec으로 송신 속도를 낮추어야 한다.이렇듯 수신 속도에 맞게 송신 속도를 낮추는 것을 흐름 제어라고 한다. 다음은 TCP에서 흐름제어를 어떻게 하는지 알아보자. 왼쪽 송신 호스트와 오른쪽 수신 호스트는 각각의 큐 구조의 송수신 버퍼를 가진다. 송신 버퍼에 있는 전체 데이터에서 MSS 단위(그림에서는 1000 byte) 만큼을 잘..