TCP/IP Sequence Number에 대한 질문입니다.

powerson의 이미지

안녕하세요. 현재 네트워크에 관련된 드라이버 모듈을 만들고 있는데요. 몇가지 질문이 있습니다.

우선 구성은 bridge로 연결이 되어 있고, 지나가는 패킷을 제 드라이버로 후킹하여 처리를 한 이후에 보내주도록 되어 있습니다.

문제는 필요시 자체적으로 socket buffer를 하나 생성해서 보내거나, socket buffer에 데이터를 추가해서 보내야 합니다.

이럴 경우 우선 A의 컴퓨터에서 보낸 패킷을 수정한 후 B 컴퓨터에게 보냈을 경우에 B컴퓨터에서 다시 보낸 acknowledge number가 틀리게 전송됩니다. 확인해보니 추가한 데이터만큼의 차이가 발생하더군요. 그래서 이 부분을 수정하였지만, 그 이후에 A컴퓨터에서 다시 패킷을 보낼 경우에 sequence number는 맞춰줄 수 있으나, acknowledge number가 이상해지더라고요. 이 부분을 어떻게 처리해야 할지 잘 모르겠습니다.

그리고 새로 생성해서 보낼 경우에도 비슷한 문제가 발생하고 있습니다. 즉 sequence number와 acknowledge number를 서로 맞춰주는 부분에 대한 문제점이 발생한다는 것이죠. 아시는 분 계시면 답변 부탁드립니다.

한가지 더 궁금한 점이 있는데요. 현재 이더리얼로 분석을 하고 있는 중인데, 이더리얼에 보면 데이터가 있는 패킷들에 대해서는 next sequence number가 보이던데 이건 어떻게 계산을 하게 되는건지 궁금합니다. 혹시 이건 단순히 스트림에 대해서 이더리얼에 자체적으로 표현을 해준 것 뿐인가요?

서부원의 이미지


저도 잘 모르겠으나 의견을 드려요

Seq번호와 Ack 번호관계를 아시리라 보는데

한번 실례를 들면

내가 A 콤에서 Send 함수를 한번 썻다고 하자요

그때 Seq 번호가 1000 이라 하자요

그러면 B 콤에서 오는 응답 패킷 ACk 번호가 1000 이겟지요

만약 B콤에서 보내는 응답 자료용량이 10000이라면 이것을 1000바이트 씩 잘라 패킷을 보낸다 할때

10개 패킷을 보내야 하는데 이10개의 패킷의 ACK가 다 1000이예요

실지 오고가는 패킷은 맞는데 님이 삭갈리지 않았는지....

그리고 seq번호 바꿀때도 check sum도 그에 맞게 수정핸지 다시한번 보아주세요.

혹시 이부분에서 삭갈리지 않았는지 다시 한번 패킷 분석해보세요.

두번째 질문은
제생각엔 현재 seq번호에 data 길이를 더한것으로서 해석돼요.

서부원의 이미지

우의 설명에서 제 약간 설명 잘못한거 있는데

요약하면

A 콤에서 Send 함수를 쓴 경우

이때 패킷의 Seq번호가 1이고 Next Seq 번호가 1000이죠 (= 현재 Seq번호 + Data 길이)

그러면 B에서 오는 패킷10개 ACK 는 다 1000 이예요 .즉 우의 Next Seq = 응답 Ack 이예요

이관계 잘 따져 보세요.

powerson의 이미지


먼저 답변 주신것에 대해서 감사 드립니다.

우선 첫번째로 현재 제가 처리하고 있는 데이터는 한 패킷(1504)미만으로 모두 처리가 가능합니다. 즉 데이터를 쪼갠 패킷에 대해선 생각하지 않아도 될거 같습니다. 암튼 제가 약간 헷갈려하는건 맞는거 같습니다. 계속 패킷을 분석하다보니 데이터를 보고 헷갈리는 부분이 적지않네요.. ㅎㅎ

그리고 두번째에 대한 답변 정말 감사합니다. 한번 패킷을 분석해서 말씀해주신 것에 적용시켜봐야 겠네요. ^^

아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

서부원의 이미지

우리 계속 토의를 합시다.
정확히 알고 넘어 가는거 좋지요

1504 크기는 제 잘기억이 안나는데 802.3 규약에 규정된 패킷크기이고

B 콤에서 recv 로 응답할때는 이 규약에 매이지 않고 임으의 크기로 응답할수 있지요.

왜냐하면 recv 는 상의 층이니 물리층규약에 매이지 않지요

말하자는 요는 B 에서 오는 패킷속에 같은 ACK 를 가지는 패킷이 여러개 있을수 있단 소리예요.

님도 다 알겠는데 미안해요.

그리고 아직은 젊다는게 무슨소리인지.

님 제 부탁 들어줄수있는지..

powerson의 이미지

네 우선 B에서 오는 패킷속에 같은 ACK가 여러개가 올 수 있다는 것은 알거 같습니다. 즉 이러한 상황들에서 제가 수정 또는 새로 생성한 패킷을 보냄으로써 기존의 규약을 깨기 때문에, 이러한 부분들을 맞춰주는 부분들이 필요한 상황입니다. 우선 다시 한번 분석을 해봐야 할거 같네요. ^^

그리고 부탁 들어줄 수 있다고 하시는게 무슨 말씀이신지요? ^^

아직은 젊다. 모든 것을 할 수 있는 나이란 말이지. <-- 이건 꼬릿말입니다. 이게 왜 여기 붙어 있는지는 잘 모르겠네요. ㅎㅎ

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

서부원의 이미지


안녕하세요.

잘 되여가나요.

사실 난 여기 들어온지 얼마 안되요.

고수님들과 사귀고 픈데 아는이 없어서 그래요.

저와 사귀지 않겠나요.

mIRC 상에서 만났으면 좋겠는데..

회답바람..

powerson의 이미지


ㅎㅎ 안녕하세요~ 요즘 회사일이 바쁘다보니 자주 접속은 하지 못하지만, 우선 저도 IRC는 합니다. ^^
어느 채널에 계신지 알려주시면, 제가 찾아가도록 하겠습니다.
근데 전 고수는 아닌지라.. ㅎㅎ

그리고 현재 어느정도 진척은 있습니다. 다시 분석하면서 하고 있는데 대충 감이 잡혔습니다.^^
물론 network order로 맞춰서 가감 연산을 했는데, 번호가 약간 이상하게 오는 문제점이 있지만, 이 부분만 해결되면 될거 같습니다.

아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

서부원의 이미지

mIRC Server:irc.hanirc.org
chanel: #freebsd
id: silverstar

님의 시간을 고려하여 오후 4시 이후에 들어갈께요.

회답바람...

익명사용자의 이미지

받는쪽이나 보내는쪽 버퍼사이즈가 1504바이트보다 작으면 작은 크기만 잘라서 보낸는것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.